【问题标题】:PHP move_uploaded_file/copy issuePHP move_uploaded_file/copy 问题
【发布时间】:2012-12-24 07:58:51
【问题描述】:

我似乎遇到了有趣的问题。我有一个上传图像并将值存储在数据库表中的表单。表单上传图像文件 OK 并使其可用于处理。问题如下;使用 move_uploaded_file 到指定目录不起作用,但是使用 copy() 到这个目录可以。

目前代码如下:

$file = $_FILES['doc_path'];

  $ext = array_pop(explode('.', $file['name']));
  $filename = uniqid() . '.' . $ext;

  if ($file['error'] == UPLOAD_ERR_NO_FILE && ! strlen($this->filename)) {
   throw new Exception('Please select a file to upload');
  } elseif ($file['error'] == UPLOAD_ERR_NO_FILE) {
   return true; // already have a file
  } elseif ($file['error']) {
   throw new Exception('File upload error');
  } elseif (! $file['size']) {
   throw new Exception('File is of zero length');
  } else {

   $path = 'uploads/' . $filename;


   if (! move_uploaded_file($file['tmp_name'], $path)) {
    throw new Exception('Could not upload file');
   }

   return $filename;
  }

我检查了目标目录是否存在,并且该目录是可写的。使用 move_uploaded_file() 不会产生错误,只是捕获了“无法上传文件”异常。

会想到如果这是一个权限问题,那么用 move_uploaded_file 代替 copy 就行不通了吗?

【问题讨论】:

  • 你有没有解决这个问题?我也遇到了同样的问题。
  • 哎呀,没有展开下面的评论线程。我找到了 print_r($_FILES);对我很有帮助。谢谢。

标签: php file-upload


【解决方案1】:

使用 move_uploaded_file() 不会产生错误,只是捕获了“无法上传文件”异常。

这可能是因为您的错误报告设置。

error_reporting(E_ALL);echo error_get_last(); 显示什么?

【讨论】:

  • 嗨,error_get_last 报告:Array ( [type] => 2048 [message] => 只有变量应该通过引用传递 [file] => /application/modules/admin/forms/Page.php [line] => 211 ) 指的是 $ext = array_pop.... 行,看不出有什么不同。
  • @simnom $file['tmp_name'] 真的存在吗?见手册:If filename is not a valid upload file, then no action will occur, and move_uploaded_file() will return FALSE.
  • 在 move_uploaded_file 语句产生“/tmp/phpfyaV0G”之前添加一个 echo $file['tmp_name'] 所以我假设是的。
  • @pekka - 有趣的是返回 false。
  • OK 解决了这个问题,我正在使用 Zend,虽然不认为这会影响 $_FILES 变量,但它似乎对这些变量做了一些奇怪的事情。扩展 Zend getValues 函数以运行以首先处理文件可以解决问题。感谢您的所有帮助@pekka。
【解决方案2】:

@simnon -

我认为这可能是路径问题。在您的源或目标中。

尝试改变:

$path = 'uploads/' . $filename;

收件人:

$path = '/uploads/' . $filename;

【讨论】:

    猜你喜欢
    • 2014-07-05
    • 2016-09-19
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多