2017-04-14 106 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;代替