有趣的问题我似乎遇到过。我有一个表单,上传图像并将值存储在数据库表中。表单上传图像文件确定并使其可用于处理。问题如下;使用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
会不会有效?
答案 0 :(得分:0)
使用move_uploaded_file()不会产生错误,只会捕获“无法上传文件”异常。
这可能是因为您的错误报告设置。
error_reporting(E_ALL);
或echo error_get_last();
显示什么?
答案 1 :(得分:0)
@simnon -
我认为这可能是一个路径问题。在您的来源或目标中。
尝试更改:
$path = 'uploads/' . $filename;
要:
$path = '/uploads/' . $filename;