Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 动态创建多个上载文件_Php_Javascript_Html - Fatal编程技术网

Php 动态创建多个上载文件

Php 动态创建多个上载文件,php,javascript,html,Php,Javascript,Html,我想知道是否有人知道动态创建上传表单的最佳方法 以下是我试图实现的目标:下面显示的代码允许一次上传,我想有一个按钮,当按下时,应该为文件上传添加另一个表单。所以,如果我想上传——比方说7个文件,我想按下按钮7次来创建这些上传表单,每个表单都在它自己的行上 还有什么我能做的吗 感谢您的帮助: <html> <head> <title> Multiple File Uploads </title> </head&g

我想知道是否有人知道动态创建上传表单的最佳方法

以下是我试图实现的目标:下面显示的代码允许一次上传,我想有一个按钮,当按下时,应该为文件上传添加另一个表单。所以,如果我想上传——比方说7个文件,我想按下按钮7次来创建这些上传表单,每个表单都在它自己的行上

还有什么我能做的吗

感谢您的帮助:

<html>
    <head>
        <title> Multiple File Uploads </title>
    </head>
    <body>
        <form enctype="multipart/form-data" action="uploader.php" method="POST">
            Choose a file to upload: <input name="uploadedfile" type="file" /><br />
            <input type="submit" value="Upload File" />
        </form>
    </body>
</html>

多文件上传
选择要上载的文件:

请看这里的一个简单示例


Josh

jQuery有一个很好的插件,我用过它叫MultiFile。你可能想看看


您可以尝试这个名为 你可以试试看


只需确保在服务器上正确处理文件,因为Flash有时会以不同的方式将数据发布到服务器。因此,如果您有某种方法来检查请求值中的内容,那么您应该很好。

通常您会这样做,客户端:

<div id='Uploadcontainer'>
   <input type='file' name='uploadfiles[]' class='uploadfile' />
</div>
<button id='extraUpload'>Add another field</button>
<script type='text/javascript'>
  $('#extraUpload').click(function(){
      $('.uploadfile:last').clone().appendTo('#uploadContainer');
  });
</script>

目前没有办法用纯HTML实现这一点。我认为最新版本的浏览器和即将发布的HTML5规范已经开始解决这个问题


大多数当前的跨浏览器解决方案都需要一个JS库(我认为还有Flash)。另一种选择是使用每个文件自己的输入元素分别选择每个文件。出于显而易见的原因,浏览器对文件上传元素的脚本编写和显示实施了非常严格的安全性,这会使它们难以使用。

这里有一个非常简单的安全性,适用于FireFox、Chrome和IE7。 我真的建议您检查一个javascript框架,比如jQuery,它会让您的生活更轻松

<div id='Uploadcontainer'>
<input type='file' name='uploadfiles[]' class='uploadfile' />
</div>
<button id='extraUpload' onclick="return addAnother('Uploadcontainer')">Add another field</button>
<script type='text/javascript'>
function addAnother(hookID)
{
    var hook = document.getElementById(hookID);
    var el      =   document.createElement('input');
    el.className    =   'uploadfile';
    el.setAttribute('type','file');
    el.setAttribute('name','uploadfiles[]');
    hook.appendChild(el);
    return false;
}

添加另一个字段
函数addother(hookID)
{
var hook=document.getElementById(hookID);
var el=document.createElement('input');
el.className='uploadfile';
el.setAttribute('type','file');
el.setAttribute('name','uploadfiles[]);
钩状附属物(el);
返回false;
}

感谢Josh的迅速回复。我看到这个解决方案使用JQuery,我以前从未使用过它。那么,您是否想知道,如果不使用任何第三方框架,是否也可以实现相同的结果?嘿,tschaible,也谢谢您的提示。有没有办法不使用JQuery或任何其他框架就实现同样的功能?这是一条非常有前途的路线,感谢Pim提供了这段伟大的代码。我将从那里继续下去。如果我撞到墙,我会喊你们的。你们一直都很好——保持幸运,祝你们好运:)
<div id='Uploadcontainer'>
<input type='file' name='uploadfiles[]' class='uploadfile' />
</div>
<button id='extraUpload' onclick="return addAnother('Uploadcontainer')">Add another field</button>
<script type='text/javascript'>
function addAnother(hookID)
{
    var hook = document.getElementById(hookID);
    var el      =   document.createElement('input');
    el.className    =   'uploadfile';
    el.setAttribute('type','file');
    el.setAttribute('name','uploadfiles[]');
    hook.appendChild(el);
    return false;
}