向服务器端发送Blob对象
在HTML 5中,可以通过XML HttpRequest对象的send方法向服务器端发送Blob对象,因为所有File对象(代表一个文件)都是一个Blob对象,所以同样可以通过发送Blob对象的方法来上传文件。
<h1>向服务器端发送Blob对象</h1> <input type="button" value="复制页面文件" onclick="uploadDocument()"><br/> <progress min="0" max="100" value="0" id="progress"></progress> <output id="result"/>
window.URL = window.URL || window.webkitURL; // 复制当前页面 function uploadDocument(){ var bb= new Blob([document.documentElement.outerHTML]); var xhr = new XMLHttpRequest(); xhr.open('POST', 'test.php?fileName='+getFileName(), true); var progressBar = document.getElementById('progress'); xhr.upload.onprogress = function(e) { if (e.lengthComputable) { progressBar.value = (e.loaded / e.total) *100; document.getElementById("result").innerHTML = '已完成进度:'+ progressBar.value+'%'; } } xhr.send(bb); } // 获取当前页面文件的文件名 function getFileName(){ var url=window.location.href; var pos=url.lastIndexOf("\\"); if (pos==-1) // pos==-1表示为本地文件 pos=url.lastIndexOf("/"); // 本地文件路径分割符为"/" var fileName=url.substring(pos+1); // 从url中获得文件名 return fileName; }
<? $str =file_get_contents('php:// input'); $fileName='副本_'.$_REQUEST['fileName']; $fp = fopen(iconv("UTF-8","GBK",$fileName),'w'); fwrite($fp,$str); fclose($fp); // 关闭文件 ?>