使用 Image_moo 使用 PHP 上传文件

File Upload with PHP using Image_moo

我有一个函数可以从 POST 请求中获取图像文件。我使用 image_moo 作为外部库在保存前调整图像大小。

这是我的函数

$dest = $_SERVER['DOCUMENT_ROOT'] . '/refundstylesheet/uploads/images/' . $_FILES['upfile']['name'];
$temp_file = $_FILES['upfile']['tmp_name'];

$this->image_moo->load($temp_file)->resize(350,350)->save($dest, TRUE);

我没有收到任何错误消息,只是没有将图像保存在服务器上。

echo $dest:** /var/www/html/refundstylesheet/uploads/images/image.png
echo $temp_file:** /tmp/phpFIQp6S

在实现此功能之前,我对上传的文件做了所有必要的 verifications

肯定有错误

Notice: Use of undefined constant dest

也许 codeigniter 处理这个不同

你应该替换这个:

$this->image_moo->load($temp_file)->resize(350,350)->save(dest, TRUE);

这样:

$this->image_moo->load($temp_file)->resize(350,350)->save($dest, TRUE);

您已经定义了一个变量 $dest 但您正在尝试使用未定义的 constant dest

错别字:

$temp_file = $_FILES['upfile']['temp_name'];
                                  ^^^^

应该是tmp_name。是的,通过从一个单词中删除一个元音但在另一个单词中忽略这样做来拯救宇宙的一些明亮的火花。

此外,除非您没有显示它,否则您只是假设上传成功。对于任何上传,您要做的第一件事就是检查 ['error'] 参数。

您的代码中有很多错误。

  1. 应该是$_FILES['upfile']['tmp_name'](不是'temp'而是'tmp')
  2. ->save(dest, TRUE) 应该是 ->save($dest, TRUE)

此外:如果您想获得错误消息,请将其放在 PHP 文件的顶部:

ini_set('display_errors', 'on');
error_reporting(E_ALL);

我解决了安装 php-gd 扩展的问题。罗尼的评论帮助了我。由于 image_moo 库会进行一些图像编辑,因此它需要此 依赖关系 。您只需执行以下命令即可安装此依赖项 (linux):

apt-get install php5-gd

检查是否安装了 phpinfo() 并重新启动 apache。