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

时间:2014-02-07 06:44:00

标签: javascript html file upload

我一直在尝试创建并提交带有JavaScript的表单,以便将文件上传到我的Web服务器。我已经读过,由于安全原因,input type="file"无法由JavaScript自动填充。在这种情况下,我如何发送POST命令来上传我的文件?

我意识到下面的代码片段不会因为这个事实而起作用,但我怎么能这样做?

我最后希望做的是将这个函数调用为一个用户将拖放的文件,这样他们就会在一个数组中。我的网络服务器上没有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”;然后将其反馈回'element'进行提交?

1 个答案:

答案 0 :(得分:2)

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

此外,如果没有某种服务器端脚本来验证文件并将其存储到正确的位置,您将无法将文件上传到服务器。如果只使用apache就可以做到这一点,那么您网站的访问者可以将他们想要的任何内容上传到您的服务器,包括病毒。

如果您确实设法使服务器端上传工作(我将首先使用带有标准文件输入字段的静态html表单进行测试),那么为了让您通过拖放接受文件并将该文件推送到服务器你需要html5文件api。很多教程如this one

如果你想要一些可以轻松跨平台运行的强大功能,请查看类似PlUpload的内容,它至少可以从客户端获得你想要的一切。