HTML表单用于文件上传 - 由JavaScript生成



我一直在尝试创建并提交带有JavaScript的表单,以将文件上传到我的Web服务器。我读到,由于安全原因,JavaScript无法自动填充input type="file"。就是这样,我该如何发送邮政命令上传我的文件?

我意识到下面的代码片段不会有效,因为我该怎么做?

我希望最终要做的是为用户拖放的许多文件调用此功能,以便将其放在数组中。我的Web服务器上没有PHP(它只会递给简单的HTTP命令)。

 function uploadFile( fileName )
   {
     var form     = document.createElement("form");
     var element1 = document.createElement("file");
     form.method  = "post";
     form.action  = "upload.html";
     form.enctype = "multipart/form-data";
     form.charset = "utf-8";
     element1.value = "/Temp/TestFile.txt";
     element1.name = "upload1";
     form.appendChild( element1 );
     document.body.appendChild( form );
     form.submit();
   }

阅读了汤姆提供的第一个链接后,这就是我想到的:

   function uploadFile( fileName )
   {
     var form     = document.createElement("form");
     var element1 = document.createElement("file");
     form.method  = "post";
     form.action  = "upload.html";
     form.enctype = "multipart/form-data";
     form.charset = "utf-8";
     element1.value = "/JScript/TestText.txt"
     element1.id    = "fileselect";
     element1.name  = "fileselect[]";
     element1.multiple = "multiple";
     form.appendChild( element1 );
     document.body.appendChild( form );
     form.submit();
   }

..但是我不明白我将理解是一个数组的fileSelect [] ..我该如何填充数组,然后将其分配回HTML元素?例如,我只有一个文件可以发布回来,即/jscript/testtext.txt ..如何分配fileSelect [0] ="/jscript/testtext.txt";然后将其送回"元素"以提交?

更正您无法填充文件输入的值。如果可以的话,您可以访问用户计算机上的任何文件,这将是一个巨大的安全问题。

另外,您将无法将文件上传到服务器上,而无需服务器端脚本绘制某种验证文件并将其存储到正确的位置。如果可以使用Apache来执行此操作,那么您网站的访问者可以将其想要的任何内容上传到您的服务器,包括病毒。

如果您确实设法使服务器端上载可以正常工作(我将首先使用标准文件输入字段进行静态HTML表单),然后为了您通过拖放接受文件,并将该文件推到服务器您需要HTML5文件API。像这样的大量教程。

如果您想要可以轻松跨平台工作的强大的东西,请查看诸如Plupload之类的东西,它至少可以从客户端实现您想要的一切。

最新更新