将前端图像上传到文件位置,然后检索图像

时间:2016-02-16 14:05:26

标签: php html wordpress file-upload

如何将前端上传的图像(通过文件上传)保存到后端(我正在使用Wordpress,因此文件位置在wp-content中某处),然后可以在另一个页面,以便可以查看?

到目前为止,我尝试使用以下代码,但代码不成功。以下是一页上传的文件:

<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"  />';
}

1 个答案:

答案 0 :(得分:0)

为了说清楚,您希望为用户提供上传多个文件的可能性,然后将其重定向到页面,在那里他可以看到这些文件,我是否正确?

首先,我看不到表单标签,确保您包含 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>

之后将数据发送到test.php文件。您可以使用$ _FILES变量(take a look how this array looks like)来访问它们。

问题是你有$ _FILES ['usp-files'] - 5个数组(名称,类型,tmp_name,错误和大小),其中包含你发送的文件的信息(再次在数组中)。这就是为什么你不能像这样使用foreach。在这种情况下,您只是访问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

P.S。:对不起大家的语法错误......还在学习英语:D