& lt;输入类型=“file" /比;张贴数据为…


<input type="file"/> posting data as...?

我甚至不确定这是否可能…

给定一个具有<input id="fileinput" type="file" />的表单和一个有效的选定文件,我可以在XMLHttpRequest对象中使用document.getElementById("fileinput").value POST value并期望$_FILES持有该对象吗?如果可以合理地期望POST能够通过,那么我如何获得文件的信息?

跟进

是否可以使用标准XMLHttpRequest对象与FileReader上传文件?或者这是完全不同的情况?我在尽量减少多余的代码,而不是反复问愚蠢的问题。

编辑-关闭

发现使用基本的文件API而不使用文件读取器可以毫无问题地完成,尽管它为那些拥有它的人集成了文件读取器。

本质上,use XMLHttpRequest().upload发送File。完全异步的;但在IE或Opera中没有乐趣,在这种情况下,我可以退回到标准的同步形式或iframe fake。

无论如何,既然这显然是不可能做到的,我认为它将成为一个伟大的开源发布。谢谢所有。

你可以在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
};

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

大多数的解决方法都涉及到某种形式的Flash上传器,比如SWFUpload。HTML5有一些简洁的东西,但你会失去50%的互联网IE用户。

没有。

你不能随意发布文件。

看看这个问题的解决方法。

如何伪造ajax文件上传?

或者这个:如何异步上传文件?

try valums file-uploader

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

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