2013-04-30 34 views
0

我在頁面上有多個圖像上傳表單(最多3個) - 但用戶可能選擇不上傳1個或多個圖像。該腳本處理的上傳時1個或多個留空給了我這個錯誤:錯誤句柄不工作 - 文件上傳檢查

「警告:複製()[function.copy]:文件名不能爲空」 ......

我試圖使用下面的代碼忽略複製請求,如果/當字段爲空時執行復制,如果文件上載存在但它不起作用。有人可以告訴我爲什麼這不起作用或更恰當的如何我需要以不同的方式進行編碼?

FORM

<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> 

PHP在processor.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);} 

回答

0

運行copy()功能在這個環節在這裏評論使用:Multiple file upload in php感謝:安迪·布拉漢姆爲他輸入上線。

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 

    } 
    } 
} 
0

你需要使用的文件操作功能,例如複製之前添加的文件系統級別檢查。

使用is_file()file_exists()首先要檢查它是否確定它

if ($_FILES['ufile']['name'][0] !=="" 
     && $_FILES['ufile']['name'][0] !==NULL 
     && file_exists("full/path/to/".$_FILES['ufile']['name'][0]) 
    ) 
    { 
    copy... 
    } 
+0

你的意思是這樣的嗎? $ flag1 = file_exists($ _ FILES ['ufile'] ['name'] [0]); if($ flag1 =「1」); {copy($ _ FILES ['ufile'] ['tmp_name'] [0],$ pfi1); – DMSJax 2013-04-30 18:41:06

+0

@ user2065226:更新回答.. – raidenace 2013-04-30 18:43:31

+0

@Raidenance - 我有一個奇怪的結果,這是短暫的工作,然後停止工作,我檢查並重新檢查字符的性格,但無法找到什麼打破了它。無論如何,我無法得到它再次工作,並找到了不同的路線,在這裏工作:[鏈接](http://stackoverflow.com/questions/2704314/multiple-file-upload-in-php) – DMSJax 2013-05-01 02:54:11