我已经就此问了几个问题,每一步都让我更接近但是它仍然没有按预期工作。
我想上传一张图片并将其写入文本文件,然后当我上传另一张将被写入结尾的图片时依此类推。所以最终你会有一个包含大量图像的长文件。
据我所知,我的代码应该可行,但它没有。以下是网站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 :(得分:1)
一些评论
move_uploaded_file
调用未受到进一步保护,则允许上传任何文件,包括脚本文件 - 这会在您的应用程序中打开一个安全漏洞 - 检查MIME类型和文件扩展名以避免这种情况json_decode
会返回null
- 而不是代码中的false
array_merge
附加到数组,这只会覆盖上一次执行的$_FILES
的属性 - 使用$aOutPut[] = $_FILES;
而不是