如何将前端上传的图像(通过文件上传(保存到后端(我使用的是Wordpress,所以文件位置在wp内容中的某个地方(,以便在另一个页面上检索图像以便可以查看?
到目前为止,我尝试使用以下代码,但没有成功。这是一页上的文件上传:
<input name="usp-files[]" type="file" maxlength="255" data-required="false" placeholder="File(s)" class="usp-input usp-input-files select-file multiple" multiple="multiple" id="usp-multiple-files" />
<input name="usp-file-limit" class="usp-file-limit" value="20" type="hidden" />
<input name="usp-file-count" class="usp-file-count" value="1" type="hidden" />
然后在另一个页面上的以下代码来检索以前从后端文件位置上传的图像:
foreach ($_FILES["usp-files"] as $file) {
echo '<input name="usp-files[]" value="'.$file["usp-files"]["tmp_name"].'" type="hidden" />';
}
为了清楚起见,您想为用户提供上传多个文件的可能性,然后将他重定向到页面,在那里他可以看到这些文件,我说得对吗?
首先,我看不到表单标签,请确保您包含enctype="multipart/form-data">属性,每当您想处理需要的文件时(方法必须设置为POST以及将发送POST请求的操作(。
下面是 html 代码应该是什么样子的示例:
<form action="test.php" method="post" enctype="multipart/form-data">
<input type="file" name="usp-files[]" multiple="multiple">
<input type="submit" value="send files">
</form>
之后,数据被发送到测试.php文件。您可以使用 $_FILES 变量访问它们(看看这个数组是什么样子的(。
问题是您在 $_FILES['usp-files'] 中拥有 5 个数组(名称、类型、tmp_name、错误和大小(,其中包含您发送的文件的信息(再次在数组中(。这就是为什么你不能像那样使用。在这种情况下,您只是在访问tmp_name。这更容易,看看下面的例子:
foreach ($_FILES['usp-files']['tmp_name'] as $fileName) {
echo '<input name="usp-files[]" value="'.$fileName.'" type="hidden" />';
}
这可能是你想在你的例子中向我们展示的东西。不幸的是,对我来说它不起作用。这可能取决于配置,临时文件几乎会立即删除。为了解决这个问题,我拿了这些临时文件,并用它们的原始名称将它们移动到我的文件夹中。之后,我可以访问它们。再看看我们的例子:
/* first set your directory where files will be moved */
$target_dir = "uploads/";
/*
I used here for because I am going to work with indexes and it is more comfortable for me
pay attention on condition, I used array which contains name of all files uploaded (maybe there is
some function to count FILES but never heard of that)
*/
for ($i = 0; $i < count($_FILES['usp-files']['name']); $i++) {
/* This is path where file will be stored (my directory + file name) */
$target_file = $target_dir . basename($_FILES["usp-files"]["name"][$i]);
/* This is function which will move temp file (copy it) to directory I selected */
move_uploaded_file($_FILES["usp-files"]["tmp_name"][$i], $target_file);
/* After that you can print out that input with Your new path */
echo '<input name="usp-files[]" value="'.$target_file.'" type="hidden" />';
}
还有一件事可能对你有所帮助,我正在名为WAMP的软件上测试它。并且禁用了上传多个文件。如果您正在使用它,请尝试编辑 php.ini 文件(您可以在系统托盘中访问它(并检查这些值:
file_uploads = On
post_max_size = 100M
upload_max_filesize = 100M
对我来说,第二个和第三个不见了,我添加了它们并且它起作用了。
好吧,我希望我能帮助你,希望你能解决它:D
PS:对不起大家的语法错误...还在学习英语:D