开发者

How to process <input type="file" name="test1[f]" /> in PHP?

var_dump($_FILES) gives the following:

array
  'test1' => 
    array
      'name' => 
        array
          'f' => string 'ntuser.dat.LOG' (length=14)
      'type' => 
        array
          'f' => string 'application/octet-stream' (length=24)
      'tmp_name' => 
        array
          'f' => string 'D:\wamp\tmp\php22开发者_如何学运维3.tmp' (length=22)
      'error' => 
        array
          'f' => int 0
      'size' => 
        array
          'f' => int 0

Why is http designed this way?How can I process the array efficiently(sometimes means no looping?) so I can get the file by $_FILES['test1']['f']?


I guess input fields with type file are not meant to be used with array like names. Use

 <input type="file" name="test1_f" />

instead and access with $_FILES['test1_f'].

Otherwise you cannot access the single attributes of the file without looping.

Maybe you can show us how you create the input elements and how you want to process the $_FILES array in order to provide a better solution.

Update:
I have to redraw my statement partially. As described here, PHP supports HTML array feature also for files. But the point with this is, that the files on the server side should be processed as a whole.
They also provide a nice example how too deal with, maybe it helps you:

foreach ($_FILES["pictures"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
        $name = $_FILES["pictures"]["name"][$key];
        move_uploaded_file($tmp_name, "data/$name");
    }
}

If you want to have access to a single file, then you just use the wrong approach.


Seems to be pretty straightforward:

$filepath = $_FILES["test1"]["tmp_name"]["f"];
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜