请教 php 上传多个文件的问题

2016-11-19 18:17:07 +08:00
 helloccav

表单 HTML :

<form method="post" enctype="multipart/form-data">
    <input type="file" name="file[]" multiple="multiple">
</form>

php 端通过 $_FILES 获取到的值:

Array
(
    [file] => Array
        (
            [name] => Array
                (
                    [0] => 1.jpg
                    [1] => 2.jpg
                )
            [type] => Array
                (
                    [0] => image/jpeg
                    [1] => image/jpeg
                )
            [tmp_name] => Array
                (
                    [0] => /tmp/php330E.tmp
                    [1] => /tmp/php330F.tmp
                )

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

            [size] => Array
                (
                    [0] => 59420
                    [1] => 300300
                )
        )
)

请问 html 元素里有什么属性可以让 php 端通过 $_FILES 获取到的值变成这样,或者 php 里有什么非常简便的方法、函数可以变成这样:

Array
(
    [file] => Array
        (
            [0] => Array
                (
                    [name] => 1.jpg
                    [type] => image/jpeg
                    [tmp_name] => /tmp/php330E.tmp
                    [error] => 0
                    [size] => 59420
                )
                
            [1] => Array
                (
                    [name] => 2.jpg
                    [type] => image/jpeg
                    [tmp_name] => /tmp/php330F.tmp
                    [error] => 0
                    [size] => 300300
                )
        )
)
2225 次点击
所在节点    PHP
9 条回复
hanzichi
2016-11-19 18:30:32 +08:00
一般都是用 name 属性吧 ...
liuxu
2016-11-19 23:03:57 +08:00
lslqtz
2016-11-20 02:16:37 +08:00
我也想知道一下。
@hanzichi 这些字段是文件的信息,没法通过指定 name 来改...
lslqtz
2016-11-20 02:45:09 +08:00
楼主,提个问题,这样你会丢失掉传过来的 name 名。
lslqtz
2016-11-20 02:50:23 +08:00

我就只能做到这样了,效率什么的。。懒得管了
<form method="post" enctype="multipart/form-data">
<input type="file" name="f1">
<input type="file" name="f2">
<input type="submit">
</form>
<?php
if (count($_FILES) != 1) {
$filekeys=array_keys($_FILES);
for ($i=0;$i<count($filekeys);$i++) {
$nowfile=$_FILES[$filekeys[$i]];
$files['file'][$i]=['name'=>$nowfile['name'],'type'=>$nowfile['type'],'tmp_name'=>$nowfile['tmp_name'],'error'=>$nowfile['error'],'size'=>$nowfile['size']];
}
unset($filekeys,$nowfile);
}
print_r($files);
?>
lslqtz
2016-11-20 02:51:53 +08:00
你可以把它用 function 写成一个函数,然后传出数组来
lslqtz
2016-11-20 02:52:44 +08:00
不过似乎。。忘了考虑单文件下的了, if 后面加个 else 来直接 print 或者拼起来吧
chaegumi
2016-11-20 08:25:37 +08:00
不用自己写,用现成的组件 http://fex.baidu.com/webuploader/
duo6duo6
2016-11-20 16:29:47 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/321725

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX