10/10/2018, 10:38

lưu file ảnh vào mysql và hiển thị lên

Chào các bạn, mình đang gặp chút rắc rối về việc lưu một file ảnh của một sản phẩm vào cơ sở dử liệu rồi sau đó cho hiển thị ảnh của từng sản phẩm lên web. Lưu thì mình đã lưu được rồi nhưng mình không hiển thị được nội dung của file ảnh lên được! Sau đây là code của mình. Các bạn coi giúp dùm mình nha! Cảm ơn các bạn nhiều!
addpro.html
PHP Code:
<body>
<
form enctype="multipart/form-data" action="addprod.php" method="post">
Id: <input type="text" name="id" size="10"> <br>
Name: <input type="text" name="name" size="30"> <br>
Value: <input type="text" name="value" size="30"> <br><br>
Info: <br>
<
textarea name="info" rows="15" cols="60"></textarea><br>
<
input type="hidden" name="MAX_FILE_SIZE" value="1000000">
Image: <input name="imgname" type="file"> <br><br>
<
input type="submit" value="Add"> <input type="reset" value="Reset">
</
form>
</
body
adprod.php
PHP Code:
$fileName $_FILES***91;'imgname'***93;***91;'name'***93;;
$tmpName  $_FILES***91;'imgname'***93;***91;'tmp_name'***93;;
$fileSize $_FILES***91;'imgname'***93;***91;'size'***93;;
$fileType $_FILES***91;'imgname'***93;***91;'type'***93;;
$fp fopen($tmpName'rb');
$content fread($fpfilesize($tmpName));
fclose($fp);
$conn mysql_connect("127.0.0.1""root""vertrigo"
or die(
"Could not connect: " mysql_error());
$db mysql_select_db("yamaha"$conn
or die(
"Could not select database");
$sql "insert into yamaha values('" 
$_POST***91;"id"***93; . "','" .
$_POST***91;"name"***93; . "','" .
$_POST***91;"value"***93; . "','" .
$_POST***91;"info"***93; . "','" .
$fileName "','" .
$fileType "'," .
$fileSize ",'" 
mysql_real_escape_string($content$conn) . "')";
$result mysql_query($sql$conn)
or die(
'Error, query failed'); 
echo 
"<br> finish!! <br>";
echo 
'<meta http-equiv="refresh" content="3; URL =viewprod.php" />' 
viewpro.php ---HIển thị sản phẩm lên kèm them hình của mỗi sản phẩm---
PHP Code:
$conn mysql_connect("localhost""root""vertrigo"
or die(
"Could not connect: " mysql_error());
$db mysql_select_db("yamaha"$conn
or die(
"Could not select database");
$sql "SELECT id, name, value, info FROM yamaha order by id asc";
$result mysql_query($sql$conn)
or die(
"Could not do query");
echo 
"<TABLE BORDER=1>";
echo 
"<TR><TH> id </TH> <TH> product name </TH> <TH> value </TH> 
<TH> description </TH> <TH> image </TH> </TR>"
;
while (
$row mysql_fetch_array($result)) {
echo 
"<TR>"
echo 
"<TD> " $row***91;"id"***93; . " </TD>";
echo 
"<TD> " $row***91;"name"***93; . " </TD>";
echo 
"<TD> " $row***91;"value"***93; . " </TD>";
echo 
"<TD> <p>" $row***91;"info"***93; . "</p></TD>";
echo 
"<TD> <img src=viewimg1.php?id=" $row***91;"id"***93; . "></TD>";
//echo "<td>" ."</td>"
echo "</TR>";
}
echo 
"</form></TABLE>"
viewimg1.php--nhận id imange từ trang viewprod.php để hiển thị ảnh của từng sản phẩm---
PHP Code:
<?php
$conn 
mysql_connect("localhost""root""vertrigo"
or die(
"Could not connect: " mysql_error());
$db mysql_select_db("yamaha"$conn
or die(
"Could not select database");
$sql "SELECT * FROM yamaha WHERE id='".$_REQUEST***91;'id'***93;."'";
$result mysql_query($sql$conn)
or die(
"Could not do query");
$row mysql_fetch_array($result);
header("Content-type: " $row***91;"type"***93;);
header("Content-length: " $row***91;"size"***93;);
echo  
$row***91;"content"***93;;
?>
Còn đây là bảng csdl của mình
CREATE TABLE yamaha (
id varchar(10) primary key,
name varchar(30) not null,
value varchar(30) not null,
info text not null,
imgname varchar(30) not null,
type varchar(30) not null,
size int not null,
content blob not null);
Mình nghĩ là có lỗi ở 2 trang viewprod.php và viewimg1.php...các bạn xem dùm mình với nha.Thanks...a lot
Vô Thin viết 12:50 ngày 10/10/2018
Bạn phải chỉnh minetype là trong header của file ảnh được xuất ra (header('Content-Type: image/jpeg'); )từ script PHP của bạn để cho trình duyệt nhận ra đó là file ảnh chứ không nó hiểu là file binary hay file text thì sẽ rất mệt mỏi đấy.
thuyduongcd viết 12:47 ngày 10/10/2018
Thử sửa lại dòng này:
Code:
header("Content-type: image/" . $row["type"]);
hieugallant_88 viết 12:49 ngày 10/10/2018
vẫn không được. Mình đã sữa lại phần header mà vẫn không được!! hog biết lỗi chổ nào nữa!!hichic
thuyduongcd viết 12:41 ngày 10/10/2018
Không được nhưng mà không được như thế nào? Không hiển thị ảnh hay là lỗi gì? Nói rõ thì người ta mới biết đường mà fix chứ.
hieugallant_88 viết 12:42 ngày 10/10/2018
Được gửi bởi thuyduongcd
Không được nhưng mà không được như thế nào? Không hiển thị ảnh hay là lỗi gì? Nói rõ thì người ta mới biết đường mà fix chứ.
thì không hiển thị được file ảnh lên đó!! Không biết bị j nữa???
Vô Thin viết 12:49 ngày 10/10/2018
Giờ thế này: thử save (dùng PHP script để viết lệnh ghi) dữ liệu trong DB của bạn, cái chỗ mà bạn lưu file ảnh vào đó, ra một file thử file đó thế nào? Hoặc cho xuất ra binary và cho download về rồi bạn đổi đuôi thành kiểu file ảnh nguyên thủy xem trình đọc ảnh trên máy bạn có hiểu? Mục đích việc làm này để kiểm tra tính toàn vẹn của dữ liệu khi bạn đọc từ một file ảnh và lưu vào MySQL.
hieugallant_88 viết 12:44 ngày 10/10/2018
mình thử viết 1 file php riêng biệt rồi, chỉ lấy ra một file ảnh thôi. Khi chạy script thì ra cửa sổ download của windown! Nói chung là vẫn không được...hi...thank bạn đã giúp nha...

[=========> Bổ sung bài viết <=========]

mình viết thử chương trình dơnload lại rồi. Khi save file lại thì không phải là dạng file ảnh mà là file dạng j đó hog biết nữa! Vậy chắc là khi lưu dzo csdl rồi đọc ra trình duyệt không hiểu. Giờ mình hog biết làm sao nữa! Bạn coi góp ý kiến chỉ giúp mình với nha! Thanks.....
Bài liên quan
0