在图像之后上传图像并显示它们全部

时间:2017-04-14 17:45:05

标签: php json image-uploading

我已经就此问了几个问题,每一步都让我更接近但是它仍然没有按预期工作。

我想上传一张图片并将其写入文本文件,然后当我上传另一张将被写入结尾的图片时依此类推。所以最终你会有一个包含大量图像的长文件。

据我所知,我的代码应该可行,但它没有。以下是网站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);

1 个答案:

答案 0 :(得分:1)

一些评论

  • 如果move_uploaded_file调用未受到进一步保护,则允许上传任何文件,包括脚本文件 - 这会在您的应用程序中打开一个安全漏洞 - 检查MIME类型和文件扩展名以避免这种情况
  • 如果输入值为空或无法解码,则
  • json_decode会返回null - 而不是代码中的false
  • 未使用array_merge附加到数组,这只会覆盖上一次执行的$_FILES的属性 - 使用$aOutPut[] = $_FILES;而不是