Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
用于文件上传的HTML表单-通过JavaScript生成_Javascript_Html_File_Upload - Fatal编程技术网

用于文件上传的HTML表单-通过JavaScript生成

用于文件上传的HTML表单-通过JavaScript生成,javascript,html,file,upload,Javascript,Html,File,Upload,我一直在尝试用JavaScript创建并提交一个表单,以便将文件上传到我的web服务器。我已经读到,由于安全原因,input type=“file”不能由JavaScript自动填充。在这种情况下,我如何发送POST命令来上载我的文件 由于这个事实,我意识到下面的代码片段不起作用,但是我该怎么做呢 我希望最后能为用户拖放的大量文件调用这个函数,这样它们就会在一个数组中。我的Web服务器上没有PHP(它只提供简单的HTTP命令) 在阅读了Tom提供的第一个链接后,我想到了以下内容: func

我一直在尝试用JavaScript创建并提交一个表单,以便将文件上传到我的web服务器。我已经读到,由于安全原因,
input type=“file”
不能由JavaScript自动填充。在这种情况下,我如何发送POST命令来上载我的文件

由于这个事实,我意识到下面的代码片段不起作用,但是我该怎么做呢

我希望最后能为用户拖放的大量文件调用这个函数,这样它们就会在一个数组中。我的Web服务器上没有PHP(它只提供简单的HTTP命令)

在阅读了Tom提供的第一个链接后,我想到了以下内容:

   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。有很多像这样的教程


如果您想要一种能够跨平台轻松工作的健壮的东西,请至少从客户端查看一种能够实现您想要的一切的东西。

首先,应该使用
document.createElement(“input”)
而不是
document.createElement(“file”)创建输入文件元素您的代码将无法工作您正在尝试完成一项不可能完成的任务iguess@Tom:谢谢-我认为有一条非常有价值的线路可以解决我的问题!:-)我有服务器的源代码。昨晚它让我学习了所有关于HTTP消息、多部分表单和边界等的知识。。许多教程的问题在于,当你试图专注于一个基本的事情时,会有太多的“噪音”。我渴望了解AJAX等,但我想先从简单的东西开始。谢谢
   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();
   }