Php 多个上传字段

Php 多个上传字段,php,file-upload,Php,File Upload,我的问题是,如何以及将如何在php中工作 谢谢是的,它们会有用的$\u文件将是用PHP上传的文件数组。是的,它们可以工作$\u文件将是用PHP上传的文件数组。是的,这当然可以。只需看看$\u文件超全局数组。您上传的所有文件及其元数据都将存储在那里。是的,这当然有效。只需看看$\u文件超全局数组。所有上传的文件及其元数据都将存储在那里。据我所知,如果您想从html表单上传多个文件,您需要有多个文件输入框 <input type='file' name='file1'> <inpu

我的问题是,
如何以及将如何在php中工作


谢谢

是的,它们会有用的<代码>$\u文件将是用PHP上传的文件数组。

是的,它们可以工作<代码>$\u文件将是用PHP上传的文件数组。

是的,这当然可以。只需看看
$\u文件
超全局数组。您上传的所有文件及其元数据都将存储在那里。

是的,这当然有效。只需看看
$\u文件
超全局数组。所有上传的文件及其元数据都将存储在那里。

据我所知,如果您想从html表单上传多个文件,您需要有多个文件输入框

<input type='file' name='file1'>
<input type='file' name='file2'>
<input type='file' name='file3'>

除非您有某种类型的java、javascript、flex或类似的多文件上传框架来为您完成这项工作

一旦上传,PHP脚本将如下所示:

<?
  foreach($_FILES as $file){
    move_uploaded_file($file[tmp_name],$target.$file[name]);
  }
?>

据我所知,如果你想从html表单上传多个文件,你需要有多个文件输入框

<input type='file' name='file1'>
<input type='file' name='file2'>
<input type='file' name='file3'>

除非您有某种类型的java、javascript、flex或类似的多文件上传框架来为您完成这项工作

一旦上传,PHP脚本将如下所示:

<?
  foreach($_FILES as $file){
    move_uploaded_file($file[tmp_name],$target.$file[name]);
  }
?>

如果您将它们作为一个数组循环,它的工作原理是一样的:

foreach($_FILES['file'] AS $key=>$file) {
    $filename = $file['tmp_name'];
    $size = $file['size'];
    $newfile = $_SERVER['DOCUMENT_ROOT'] . "/uploads/" . date("Ymd_his") . "_" . $filename;
    move_uploaded_file($filename, $newfile);
}
它将在每次上传和处理过程中循环。 只要确保每个文件之间都有更改(我添加了一个时间戳),否则最终只会得到一个文件

您的输入是正确的

<input type="file" name="file[]" />


您可以拥有任意数量的数组

如果您将它们作为一个数组进行循环,则其工作原理相同:

foreach($_FILES['file'] AS $key=>$file) {
    $filename = $file['tmp_name'];
    $size = $file['size'];
    $newfile = $_SERVER['DOCUMENT_ROOT'] . "/uploads/" . date("Ymd_his") . "_" . $filename;
    move_uploaded_file($filename, $newfile);
}
它将在每次上传和处理过程中循环。 只要确保每个文件之间都有更改(我添加了一个时间戳),否则最终只会得到一个文件

您的输入是正确的

<input type="file" name="file[]" />

您可以拥有任意数量的属性

根据,您应该添加多个属性:

<input type="file" name="file[]" multiple="multiple">

有些浏览器(如Internet Explorer(甚至9))不支持多属性,但其他主要浏览器则支持多属性

然后,您可以通过循环到$\u FILES superglobal来获取所有文件,如下所示:

<?php

foreach ($_FILES['file']['error'] as $k => $error) {
    if (!$error) {
        move_uploaded_file($_FILES['file']['tmp_name'][$k], $your_dir.'/'.$_FILES['file']['name'][$k]);
    }
}
?>

根据,您应该添加多属性:

<input type="file" name="file[]" multiple="multiple">

有些浏览器(如Internet Explorer(甚至9))不支持多属性,但其他主要浏览器则支持多属性

然后,您可以通过循环到$\u FILES superglobal来获取所有文件,如下所示:

<?php

foreach ($_FILES['file']['error'] as $k => $error) {
    if (!$error) {
        move_uploaded_file($_FILES['file']['tmp_name'][$k], $your_dir.'/'.$_FILES['file']['name'][$k]);
    }
}
?>


可能重复的可能重复的我对移动上传的文件有疑问($filename,$newfile);如果我有新的文件路径abc/bcd/image.jpg,并且没有文件夹bd,它会创建它吗?不,你必须使用类似于
is\u dir($\u SERVER['DOCUMENT\u ROOT'].“/abc/bcd”)
的东西与php进行检查。如果它不存在,则使用
mkdir($\u SERVER['DOCUMENT\u ROOT'.“/abc/bcd”)
我对移动上传的文件($filename,$newfile)有疑问; 如果我有一个新的文件路径abc/bcd/image.jpg,并且没有文件夹bd,它会创建它吗?不,你必须使用类似于
is\u dir($\u SERVER['DOCUMENT\u ROOT'].“/abc/bcd”)
的东西与php进行检查,如果它不存在,则使用
mkdir($\u SERVER['DOCUMENT\u ROOT'.“/abc/bcd”)