为什么不只
XMLHttpRequest()与POST一起使用?
function beginQuoteFileUnquoteUpload(data){ var xhr = new XMLHttpRequest(); xhr.open("POST", "http://www.mysite.com/myuploadhandler.php", true); xhr.setRequestHeader("Content-type", "application/x-www-form-urlenpred"); xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200) alert("File uploaded!"); } xhr.send("filedata="+enpreURIComponent(data));}服务器上的处理程序脚本仅将文件数据写入文件。
EDIT
文件上传仍然是具有不同内容类型的http帖子。您可以使用此内容类型,并用边界分隔内容:
function beginQuoteFileUnquoteUpload(data){ // Define a boundary, I stole this from IE but you can use any string AFAIK var boundary = "---------------------------7da24f2e50046"; var xhr = new XMLHttpRequest(); var body = '--' + boundary + 'rn' // Parameter name is "file" and local filename is "temp.txt" + 'Content-Disposition: form-data; name="file";' + 'filename="temp.txt"rn' // Add the file's mime-type + 'Content-type: plain/textrnrn' + data + 'rn' + boundary + '--'; xhr.open("POST", "http://www.mysite.com/myuploadhandler.php", true); xhr.setRequestHeader( "Content-type", "multipart/form-data; boundary="+boundary ); xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200) alert("File uploaded!"); } xhr.send(body);}如果要发送其他数据,只需在每个部分之间加一个边界,然后描述每个部分的content-disposition和content-
type标头。每个标头由换行符分隔,正文与标头由附加的换行符分隔。自然,以这种方式上传二进制数据会稍微困难一些:-)
进一步编辑:忘记提及,请确保要发送的文本“文件”中没有任何边界字符串,否则它将被视为边界。



