我已经简化了上传没有iFrame或flash引擎的文件的代码,我想到了这个ajax函数:
<input type="file" name="uploadfile" id="myfile" /><label for="file" id="progress"></label> <script src="js/jquery-1.7.1.min.js"></script> <script> function uploadFile(files) { var xmlhttp; if(window.XMLHttpRequest) xmlhttp = new XMLHttpRequest(); else xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.upload.onprogress = function(e) { $("#progress").empty().append(e.loaded + " - " + e.total); } xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { alert(xmlhttp.responseText + "DONE!"); } } xmlhttp.open("post","post.PHP",true); xmlhttp.setRequestHeader("If-Modified-Since","Mon,26 Jul 1997 05:00:00 GMT"); xmlhttp.setRequestHeader("Cache-Control","no-cache"); xmlhttp.setRequestHeader("X-Requested-With","XMLHttpRequest"); xmlhttp.setRequestHeader("X-File-Name",files[0].fileName); xmlhttp.setRequestHeader("Content-Type","multipart/form-data"); xmlhttp.send(files[0]); } $(document).ready(function() { $("#myfile").change(function() { uploadFile(this.files); }); }); </script>
<?PHP if(isset( $_SERVER['CONTENT_TYPE'],$_SERVER['CONTENT_LENGTH'],$_SERVER['HTTP_X_FILE_NAME'] ) && $_SERVER['CONTENT_TYPE'] == 'multipart/form-data'){ $file->name = basename($_SERVER['HTTP_X_FILE_NAME']); $input = fopen('PHP://input','rb'); $file = fopen('files/'.$file->name,'wb'); stream_copy_to_stream($input,$file); fclose($input); fclose($file); } else { echo "Error"; } ?>
问题是,有时它有时会在尝试上传同一个文件时出错.我希望有一个解决方案来解决这个问题.代码很简单,当我选择具有输入文件类型的文件时,uploadFile函数会执行.
当它出错时,我可以看到文件开始上传,但它没有原始大小,所以它可能会出错并停止上传.
谢谢你,丹尼尔!
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。