2017-04-14 103 views
1

我已經提出了一些關於此問題的問題,每一步都會讓我更接近,但它仍然不能按預期工作。將圖像上傳到圖像後全部顯示

我想上傳一個圖像並將其寫入文本文件,然後當我上傳另一個圖像將寫入結束等等。所以最終你會得到一個有很多圖像的長文件。

據我可以告訴我的代碼應該工作,但它沒有。這是一個鏈接到網站website for testing。測試它可能很有用,下面是代碼。

它也總是在數組末尾創建一個空元素,就像您從測試該網站看到的一樣。

的PHP:

$sFileName = "imgDB.txt"; 

for ($i=0 ; $i < count($_FILES) ; $i++) { 
    move_uploaded_file(
     $_FILES['file-'.$i]['tmp_name'], 
     "img/". $_FILES['file-'.$i]['name'] 
    ); 
} 

$sImgs = file_get_contents($sFileName); //gets a string from the file. 

if (json_decode($sImgs, true) != false) { 
    $ajImgs = json_decode($sImgs, true); 
} else { 
    $ajImgs = array(); 
} 

$aOutPut = array_merge ($ajImgs, $_FILES); 

$aSendToFile = json_encode(
    $aOutPut, 
    JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE 
); 
file_put_contents($sFileName, $aSendToFile); 
+0

您所提供的鏈接,到http:// wonx。 dk/imgUploaderas,無法正常工作 –

+0

感謝您的支持,我已修復它:)。 – Wonx2150

回答

1

一些言論

  • 如果move_uploaded_file呼叫沒有進一步的保護,這允許上傳任何文件,包括腳本文件 - 這將在應用程序中的安全漏洞 - 檢查MIME類型和文件擴展名以避免發生這種情況
  • json_decode返回null如果輸入值爲空或無法解碼 - 不是false就像在你的代碼
  • 追加到一個數組不與array_merge做,這只是覆蓋上一次執行的$_FILES屬性 - 使用$aOutPut[] = $_FILES;代替