[英]PHP imagejpeg doesn't work
So I looked almost every question and tried to work to show my image using the php script below. 因此,我几乎查看了每个问题,并尝试使用下面的php脚本显示我的图像。 But it doesn't work. 但这是行不通的。 I also tried to see if GD library is enabled with PHPInfo() and it is working as well. 我还尝试查看GD库是否已通过PHPInfo()启用,并且它也正常工作。 I am very new to PHP but can't seem to get this working. 我对PHP非常陌生,但似乎无法正常工作。 Thanks for your help! 谢谢你的帮助!
EDIT: I get a broken image icon after I click on upload a doc button. 编辑:单击上传文档按钮后,我得到了一个损坏的图像图标。
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
if(isset($_FILES['photo'])
&& is_uploaded_file($_FILES['photo']['tmp_name'])
&& $_FILES['photo']['error'] == UPLOAD_ERR_OK) {
foreach ($_FILES['photo'] as $key => $value) {
echo "$key : $value<br />";
}
if($_FILES['photo']['type'] == 'image/jpeg') {
$tmp_img = $_FILES['photo']['tmp_name'];
$image = imagecreatefromjpeg($tmp_img);
header('Content-Type: image/jpeg');
imagejpeg($image,NULL);
imagedestroy($image);
} else {
echo "Uploaded file ewas not a jpg image.";
}
echo "no photo uploaded.";
}
}
?>
<form enctype="multipart/form-data" action="book.php" method="post">
<input type="file" name="photo">
<input type="submit" value="upload a doc">
</form>
You can try add die();
您可以尝试添加die();
after imagedestroy($image);
在imagedestroy($image);
to prevent any other output except image data. 以防止除图像数据外的任何其他输出。 Also change imagejpeg($image,NULL);
同时更改imagejpeg($image,NULL);
to imagejpeg($image);
到imagejpeg($image);
. 。
You cannot access to image direcly with tmp_name
. 您不能使用tmp_name
直接访问映像。 Firstly you should save the image to the server and after that you can use with imagecreatefromjpeg
首先,您应该将映像保存到服务器,然后可以与imagecreatefromjpeg
使用
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
if(isset($_FILES['photo'])
&& is_uploaded_file($_FILES['photo']['tmp_name'])
&& $_FILES['photo']['error'] == UPLOAD_ERR_OK) {
if($_FILES['photo']['type'] == 'image/jpeg') {
$tmp_img = $_FILES['photo']['tmp_name'];
$uniq_name = uniqid().".".explode(".",$tmp_img)[1];
move_uploaded_file($_FILES['photo']['tmp_name'],$uniq_name);
$image = imagecreatefromjpeg($uniq_name);
header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
} else {
echo "Uploaded file ewas not a jpg image.";
}
echo "no photo uploaded.";
}
}
?>
<form enctype="multipart/form-data" action="book.php" method="post">
<input type="file" name="photo">
<input type="submit" value="upload a doc">
</form>
I think the problem lies with the echo
and the output strings after the PHP section (HTML code). 我认为问题出在PHP部分(HTML代码)后的echo
和输出字符串。 Remove the foreach
loop and output HTML only if it is a new page or if something is wrong. 删除foreach
循环并仅在新页面或出现问题时才输出HTML。
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
if(isset($_FILES['photo'])
&& is_uploaded_file($_FILES['photo']['tmp_name'])
&& $_FILES['photo']['error'] == UPLOAD_ERR_OK) {
if($_FILES['photo']['type'] == 'image/jpeg') {
$tmp_img = $_FILES['photo']['tmp_name'];
$image = imagecreatefromjpeg($tmp_img);
header('Content-Type: image/jpeg');
imagejpeg($image,NULL);
imagedestroy($image);
exit; // Add this to stop the program here.
} else {
echo "Uploaded file was not a jpg image.";
}
} else {
echo 'No file was sent.';
}
}
?>
<form enctype="multipart/form-data" action="book.php" method="post">
<input type="file" name="photo">
<input type="submit" value="upload a doc">
</form>
And one other thing, if you code using Notepad, be sure that there are no hidden characters at the beginning of your file. 另外,如果您使用记事本编写代码,请确保文件开头没有隐藏的字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.