从单个文件输入类型一次转换为多个文件上载。 Newb Stuff

时间:2012-12-28 22:37:07

标签: php upload

我有一个通过表单上传图片的脚本。我想从:

<input type="file" name="img_1_upload" class="text">
<input type="file" name="img_2_upload" class="text">
<input type="file" name="img_3_upload" class="text">
<input type="file" name="img_4_upload" class="text">
<input type="file" name="img_5_upload" class="text">
<input type="file" name="img_6_upload" class="text">

通过以下方式使用多重上传输入类型:

<input name="images[]" id="filesToUpload" type="file" multiple="" />

我的PHP脚本检测到使用names = img_1_upload,img_2_upload,img_3_upload输入的图像......一直到img_6_upload ......

但是使用多文件输入类型,我无法将每个文件的名称设置为img_1_upload,..等格式。

处理此问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

您是否尝试过move_uploaded_file()功能?无论如何,上传的文件都是临时文件。您可能需要将它们移动到更合适的位置。在移动时,您还可以将文件重命名为您想要的任何内容。

P.S:我假设您知道可以使用$_FILES["images"]["name"][index]访问文件的名称,其中index是从0到文件数的数组索引 - 。

P.S2:还要确保您的表单具有多个文件的enctype="multipart/form-data"属性。

答案 1 :(得分:0)

$ _ FILES数组包含上传文件的信息。上传多个文件时,$ _FILES的结构如下; 阵列

(
    [name] => Array
        (
            [0] => foo.txt
            [1] => bar.txt
        )

    [type] => Array
        (
            [0] => text/plain
            [1] => text/plain
        )

    [tmp_name] => Array
        (
            [0] => /tmp/phpYzdqkD
            [1] => /tmp/phpeEwEWG
        )

    [error] => Array
        (
            [0] => 0
            [1] => 0
        )

    [size] => Array
        (
            [0] => 123
            [1] => 456
        )
)

然后,您可以使用简单的foreach()循环重命名文件。