首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP imagejpeg不工作

PHP imagejpeg不工作
EN

Stack Overflow用户
提问于 2013-10-14 01:02:03
回答 3查看 1.1K关注 0票数 0

因此,我看了几乎所有的问题,并尝试使用下面的php脚本显示我的图像。但它不起作用。我还尝试查看是否使用PHPInfo()启用了GD库,并且它也工作得很好。我是PHP的新手,但似乎不能让它工作。谢谢你的帮忙!

编辑:点击upload a doc按钮后,我得到一个损坏的图像图标。

代码语言:javascript
复制
<?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>
EN

回答 3

Stack Overflow用户

发布于 2013-10-14 01:12:26

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

票数 0
EN

Stack Overflow用户

发布于 2013-10-14 01:28:31

您不能使用tmp_name直接访问镜像。首先,您应该将图像保存到服务器,然后您可以使用imagecreatefromjpeg

代码语言:javascript
复制
<?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
EN

Stack Overflow用户

发布于 2013-10-14 01:29:10

我认为问题出在echo和PHP节(HTML代码)之后的输出字符串上。删除foreach循环并仅在是新页面或出现错误时输出HTML.

代码语言:javascript
复制
<?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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19347832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档