2013-10-13 22 views
0

所以我看了几乎每个问题,并尝试使用下面的PHP脚本来显示我的图像。但它不起作用。我也试着看看GD库是否使用PHPInfo()来启用,并且它也可以工作。我对PHP很陌生,但似乎无法得到这个工作。谢谢你的帮助!PHP imagejpeg无法正常工作

编辑︰我点击上传文档按钮后,我得到一个破碎的图像图标。

<?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> 

回答

0

您可以尝试imagedestroy($image);之后添加die();防止除了图像数据的任何其他输出。还将imagejpeg($image,NULL);更改为imagejpeg($image);

+0

我只是试了两种。都没有工作。 :( –

+0

删除这也'foreach($ _FILES ['photo']为$ key => $ value){ echo“$ key:$ value
”; }' – ParaBellum

0

您无法直接访问图像tmp_name。首先,你应该将图像保存到服务器后,您可以用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> 
0

使用我认为问题出在PHP部分(HTML代码)后echo和输出字符串。删除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> 

还有一件事,如果您使用记事本进行编码,请确保文件开头处没有隐藏字符。

+0

感谢您的解决方案。 。此外,我删除了代码开始和文件顶部之间的空白区域。空白区域如何创建错误?是“隐藏字符”吗?此外,我正在使用Sublime Text。谢谢! –

+0

There有两点:第一是输出任何字符会因为“header”函数而引发警告,这个警告可能会破坏图像,第二点是发送给浏览器的任何额外字符将被假定为图片的一部分甚至空间。 –