0

我在一个页面上有一个多张图片上传表单(最多 3 张) - 但用户可以选择根本不上传 1 张或更多张图片。当 1 个或多个留空时处理上传的脚本给了我这个错误:

“警告:copy() [function.copy]: 文件名不能为空”....

如果/当字段为空时,我尝试使用下面的代码忽略复制请求,但如果文件上传存在但它不起作用,则执行复制。有人可以告诉我为什么这不起作用或者更恰当地说我需要如何以不同的方式对其进行编码吗?

形式

<form id="form1" method="post" action="processor.php" enctype="multipart/form-data">

<div>
First Profile Image  <input name="ufile[]" type="file" /><br />
Second Profile Image <input name="ufile[]" type="file" /><br />
Third Profile Image  <input name="ufile[]" type="file" /><br />
<input type="submit" name="submit" id="submit" value="Submit" />

</div>

processor.php 文件中的 PHP

$pfi1= "upload/".$_FILES['ufile']['name'][0];
$pfi2= "upload/".$_FILES['ufile']['name'][1];
$pfi3= "upload/".$_FILES['ufile']['name'][2];
if ($_FILES['ufile']['name'][0] !=="" || $_FILES['ufile']['name'][0] !==NULL) {copy($_FILES['ufile']['tmp_name'][0], $pfi1);}
if ($_FILES['ufile']['name'][1] !=="" || $_FILES['ufile']['name'][1] !==NULL) {copy($_FILES['ufile']['tmp_name'][1], $pfi2);}
if ($_FILES['ufile']['name'][2] !=="" || $_FILES['ufile']['name'][2] !==NULL) {copy($_FILES['ufile']['tmp_name'][2], $fi3);}
4

2 回答 2

0

您需要在使用文件操作功能(如复制)之前添加文件系统级别检查。

使用is_file()orfile_exists()首先检查是否可以在其上运行copy()功能

    if ($_FILES['ufile']['name'][0] !=="" 
       && $_FILES['ufile']['name'][0] !==NULL
       && file_exists("full/path/to/".$_FILES['ufile']['name'][0])
   )
   {
     copy...
   }
于 2013-04-30T18:32:06.867 回答
0

正如此处对此链接的评论中所使用的:PHP 中的多个文件上传感谢:Andy Braham 在该线程上的输入。

HTML

<input name="upload[]" type="file" multiple="multiple" />

PHP

//Loop through each file
for($i=0; $i<count($_FILES['upload']['name']); $i++) {
  //Get the temp file path
  $tmpFilePath = $_FILES['upload']['tmp_name'][$i];

  //Make sure we have a filepath
  if ($tmpFilePath != ""){
    //Setup our new file path
    $newFilePath = "./uploadFiles/" . $_FILES['upload']['name'][$i];

    //Upload the file into the temp dir
    if(move_uploaded_file($tmpFilePath, $newFilePath)) {

      //Handle other code here

    }
  }
}
于 2013-05-01T02:57:13.410 回答