2013-03-22 145 views
3

我需要關於使用php上傳多個文件的幫助。當我上傳具有不同字符名稱的文件時,它會更改文件名,例如,如果上傳後它的"Kayıt.doc"更改爲"Kayıt.doc"。我不希望發生這種情況,我該怎麼辦?請幫助.... :)php上傳的文件名更改

這是HTML頁面....

<!doctype html> 
<html> 
    <body> 
    <form action="cvupload.php" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
     <table width="539" height="75" border="0"> 
      <tr> 
       <td width="220"><div align="right">Step 2 : </div></td> 
       <td width="309">Please upload your cv now </td> 
      </tr> 
      <tr> 
       <td><span class="style14">Submit your cv (ms word/zip format)</span></td> 
       <td><label for="file"></label> 
       <input type="file" name="file[]" id="file" /></td> 
      </tr> 
      <tr> 
       <td>&nbsp;</td> 
       <td><label for="Submit"></label> 
       <input type="submit" name="Submit" value="Submit" id="Submit" /></td> 
      </tr> 
     </table> 
    </form> 
    </body> 
</html> 

,這是PHP網頁...

<?php 

$toplam = count($_FILES["file"]["name"]); 
for ($i = 0; $i < $toplam; $i++) 
{ 
    foreach ($_FILES['file']['name'] as $filename) 
    { 


if (((($_FILES["file"]["type"][$i] == "application/msword")||($_FILES["file"]["type"][$i] == "application/zip"))) 
&& ($_FILES["file"]["size"][$i] > 0)) 
    { 
    if ($_FILES["file"]["error"][$i] > 0) 
    { 

    echo "Return Code: " . $_FILES["file"]["error"][$i] . "<br />"; 
    } 
    else 
    { 
    echo "Upload: " . $_FILES["file"]["name"][$i] . "<br />"; 
    echo "Type: " . $_FILES["file"]["type"][$i] . "<br />"; 
    echo "Size: " . ($_FILES["file"]["size"][$i]/1024) . " Kb<br />"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"][$i] . "<br />"; 

    if (file_exists("upload/" . $_FILES["file"]["name"][$i])) 
     { 
     echo $_FILES["file"]["name"][$i] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"][$i], 
     "upload/" . $_FILES["file"]["name"][$i]); 
     echo "Stored in: " . "upload/" . $_FILES["file"]["name"][$i]; 
     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 

    } 
} 
?> 

當我不喜歡這個<input type="file" name="file" id="file" />支架使用對於只有1個文件它確定,但對於多個文件它不起作用。

+1

上傳的文件名包含重音字符?如果是使用'utf8encode()'或'utf8decode()' – Kathiravan 2013-03-22 12:10:43

+0

您在生成目標文件路徑不應該用原來的文件名;考慮給它一個唯一的ID,而只使用擴展名。 – 2013-03-22 12:17:09

回答

1

我猜你的代碼沒有問題。我想你的電腦不支持一些字符編碼。

<?php 
    function utf8_urldecode($str) { 
    $str = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($str)); 
    return html_entity_decode($str,null,'UTF-8');; 
    } 

轉介此處。

3

謝謝大家的回覆,我改變了這樣的代碼,它的工作。

move_uploaded_file($_FILES["file"]["tmp_name"][$i], "upload/" . iconv("UTF-8", "ISO-8859-9//TRANSLIT",$_FILES["file"]["name"][$i]));