PHP:如何移动上传的文件?

时间:2013-01-21 07:57:59

标签: php html mysql

PHP代码:

$target_path='uploads/';
//$target_path=$target_path.basename($_FILES['photo']['name']);
$res=move_uploaded_file($_FILES['photo']['tmp_name'],$target_path);
if($res)
//perform insert query
else
//echo 'file not uploaded';

HTML code:

<td colspan="3"> <input type="file" name="photo" id="photo"> </td>

执行后,图像文件不会移动到target_path文件夹。此外,$ res的值仍为空。

如果变量的值为“true”,我需要$ res的值,因为我想执行插入查询。

上传的文件中没有错误。它存在,target_path也存在。 target_path文件夹中没有相同名称的文件。

4 个答案:

答案 0 :(得分:0)

您的文件是否输入HTML中的表单元素?你有没有enctype =&#34; multipart / form-data&#34;在你的表单元素上?

如果您有上述内容,请执行此操作以调试正在进行的操作。这将打印出文件数组,以便您查看是否存在问题:

exit(var_dump($_FILES));
$target_path='uploads/';
//$target_path=$target_path.basename($_FILES['photo']['name']);
$res=move_uploaded_file($_FILES['photo']['tmp_name'],$target_path);
if($res)
//perform insert query
else
//echo 'file not uploaded';

答案 1 :(得分:0)

我只是使用copy()而不是move_uploaded_files而且它有效。请注意,我的表单中没有提到的enctype。不知道是不是因为move_uploaded_files不能正常工作。但是copy()肯定没有它。

还要考虑oldskool上面评论的内容

“$ _ FILES ['photo'] ['tmp_name']将保存上传的完整路径,如/ tmp / asx823ASDfg,因此使用此语法将导致/ upload // tmp / asx823ASDfg,这是绝对的一个(最有可能)不存在的文件夹的路径。 - Oldskool

答案 2 :(得分:0)

这是一个有效的代码

$target_path='/uploads/';
$target_path=$target_path.uniqid().$_FILES['upload_photo']['name'];
$res=move_uploaded_file($_FILES['upload_photo']['tmp_name'],$target_path);
if($res)
//perform insert query
else
//echo 'file not uploaded';

 <input type="file" name="upload_photo" id="upload_photo"> 

答案 3 :(得分:-1)

请尝试这种方式..

move_uploaded_file($_FILES['photo']['tmp_name'], "/upload/".$_FILES['photo']['tmp_name']);