<input type =“file”/>将数据发布为......?

时间:2011-11-17 17:54:41

标签: php javascript html5 post file-upload

我甚至不确定这是否可行......

如果表单中包含<input id="fileinput" type="file" />和有效的选定文件,我是否可以value使用document.getElementById("fileinput").valueXMLHttpRequest对象中发布$_FILES并期望XMLHttpRequest抓住这个对象?如果可以合理地预期POST,我怎样才能获得文件的信息?

跟进

是否可以使用带有FileReader的标准use XMLHttpRequest().upload对象来上传文件?或者这是一种完全不同的鱼?我正在努力减少无关的代码,而不是反复提出愚蠢的问题。

修改 - 关闭

发现它可以毫无问题地完成,只使用没有文件阅读器的基本文件API就可以解决问题,尽管它为那些拥有文件阅读器的人提供了文件阅读器。

基本上,File发送{{1}}。完全异步;但在IE或Opera中没有任何乐趣,在这种情况下,我可以回退到标准的同步形式或iframe伪造。

无论如何,因为显然它无法完成,我认为它将成为一个很好的开源发布。谢谢大家。

4 个答案:

答案 0 :(得分:1)

不,JavaScript无法访问file input字段中的文件。

大多数解决方法都涉及某种类型的Flash上​​传程序,例如SWFUpload。有一些整洁的HTML5的东西,但你将失去作为IE用户的50%的互联网。

答案 1 :(得分:1)

您可以在HTML5中使用http://jsfiddle.net/Cjs4G/

document.getElementById("upload").onchange = function(e) { // on file select
    var fr = new FileReader; // reads files

    fr.onloadend = function() {             // when done reading
        alert(fr.result.substring(0, 100)); // alert first part of data
        // or send `fr.result` through AJAX
    };

    fr.readAsBinaryString(e.target.files[0]); // start reading
};

答案 2 :(得分:0)

尝试valums file-uploader

我只是像一周前那样实现ajax图像上传

https://github.com/valums/file-uploader

答案 3 :(得分:0)

NOPE。

你不能ajaxly发布文件。

看看这个关于伪造它的方法的问题。

How to fake ajax file upload?

或者这个: How can I upload files asynchronously?