我想要任何可以向我演示如何在PHP中上传多个文件的php脚本。在我的应用程序中,我给了一个链接“添加图像”& “删除图片”,点击“添加图片”我在页面上使用javascript添加一个新的上传字段,使用哪个用户可以上传越来越多的图片,暂时不限制图片数量。点击删除我删除该元素。
我只是没有得到如何在PHP的POST请求中处理它们的概念。我知道在HTML中,如果我们给出像myimages[]
这样的字段的名称,那么它将创建一个PHP数组,但是如何处理它。
我不想使用AJAX / JavaScript进行上传,希望在PHP中使用传统的POST请求。
如果有人有任何显示此类功能的链接或代码,那么请求提供它将非常有用。
谢谢!
答案 0 :(得分:3)
结合uploading multiple files& move_uploaded_file
<form action="file-upload.php" method="post" enctype="multipart/form-data">
Send these files:<br />
<input name="userfile[]" type="file" /><br />
<input name="userfile[]" type="file" /><br />
<input type="submit" value="Send files" />
</form>
$uploads_dir = '/uploads';
foreach ($_FILES["userfile"]["error"] as $key => $error)
{
if ($error == UPLOAD_ERR_OK)
{
$tmp_name = $_FILES["userfile"]["tmp_name"][$key];
$name = $_FILES["userfile"]["name"][$key];
move_uploaded_file($tmp_name, "$uploads_dir/$name");
}
}
答案 1 :(得分:2)
上传的文件不在POST数组中,它们位于FILES数组中。 http://www.php.net/manual/en/features.file-upload.multiple.php
将文件上传到具有“安全”名称的临时区域。该数组将包含文件名和tmp文件。然后,您可以将它们移动到您想要的位置。
答案 2 :(得分:1)
在HTML中将文件输入字段命名为file [],然后在PHP中运行一个从0开始计数($ _ FILES)的循环...
for($i = 0; $i < count($_FILES['file']['tmp_name']); $i++){
$tmp = $_FILES['file']['tmp_name'][$i];
$name = md5(microtime());
if(move_uploaded_file($tmp, "dir/$name.jpg")){
echo "File '$tmp' uploaded successfully";
}else{
echo "Uploading '$tmp' failed";
}
}
答案 3 :(得分:1)
我在过去实现了类似的东西:
有一个隐藏的JavaScript表单变量(例如:“numuploads”),用于存储当前表单中的文件输入数。当您在前端添加/删除输入时,需要递增/递减。
使用诸如“upload_X”之类的模式为前端的每个输入命名,其中X是序列中的下一个。 (实际上与-1以上的计数器相同。)
在PHP登录页面上,只需扫描$_FILES superglobal,查找每个“upload_X”,其中X为零至numuploads - 1.
然后,您可以为每个上传的文件,其他表单元素等执行所需的逻辑。