upload.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. document.write("<script language=javascript src='jquery-1.4.4.min.js'></script>");
  2. var xmlHttpRequest;
  3. var ot; //
  4. var oloaded;
  5. function createXmlHttpRequest() {
  6. if (window.ActiveXObject) {
  7. return new ActiveXObject("Microsoft.XMLHTTP");
  8. } else if (window.XMLHttpRequest) {
  9. return new XMLHttpRequest();
  10. }
  11. }
  12. function dataURLtoFile(dataurl, filename) {
  13. //var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
  14. //bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
  15. var bstr = atob(dataurl);
  16. var n = bstr.length;
  17. var u8arr = new Uint8Array(n);
  18. while (n--) {
  19. u8arr[n] = bstr.charCodeAt(n);
  20. }
  21. var suffix = filename.substring(filename.length - 3, filename.length);
  22. if (suffix == "jpg" || suffix == "JPG")
  23. return new File([u8arr], filename, { type: 'image/jpg' });
  24. if (suffix == "png" || suffix == "PNG")
  25. return new File([u8arr], filename, { type: 'image/png' });
  26. if (suffix == "tif" || suffix == "TIF")
  27. return new File([u8arr], filename, { type: 'image/tiff' });
  28. if (suffix == "pdf" || suffix == "PDF")
  29. new File([u8arr], filename, { type: 'application/pdf' });
  30. return new File([u8arr], filename, { type: 'application/jpg' });
  31. }
  32. function progressFunction(evt) {
  33. var progressBar = document.getElementById("progressBar");
  34. var percentageDiv = document.getElementById("percentage");
  35. // event.total是需要传输的总字节,event.loaded是已经传输的字节。如果event.lengthComputable不为真,则event.total等于0
  36. if (evt.lengthComputable) {//
  37. progressBar.max = evt.total;
  38. progressBar.value = evt.loaded;
  39. percentageDiv.innerHTML = Math.round(evt.loaded / evt.total * 100) + "%";
  40. }
  41. var time = document.getElementById("time");
  42. var nt = new Date().getTime(); //获取当前时间
  43. var pertime = (nt - ot) / 1000; //计算出上次调用该方法时到现在的时间差,单位为s
  44. ot = new Date().getTime(); //重新赋值时间,用于下次计算
  45. var perload = evt.loaded - oloaded; //计算该分段上传的文件大小,单位b
  46. oloaded = evt.loaded; //重新赋值已上传文件大小,用以下次计算
  47. //上传速度计算
  48. var speed = perload / pertime; //b/s
  49. var bspeed = speed;
  50. var units = 'b/s'; //单位名称
  51. if (speed / 1024 > 1) {
  52. speed = speed / 1024;
  53. units = 'k/s';
  54. }
  55. if (speed / 1024 > 1) {
  56. speed = speed / 1024;
  57. units = 'M/s';
  58. }
  59. speed = speed.toFixed(1);
  60. //剩余时间
  61. var resttime = ((evt.total - evt.loaded) / bspeed).toFixed(1);
  62. time.innerHTML = ',速度:' + speed + units + ',剩余时间:' + resttime + 's';
  63. if (bspeed == 0)
  64. time.innerHTML = '上传已取消';
  65. }
  66. //上传成功响应
  67. function uploadComplete(evt) {
  68. // alert(evt.target.responseText);
  69. alert("上传成功");
  70. }
  71. //上传失败
  72. function uploadFailed(evt) {
  73. //alert(evt.target.responseText);
  74. //alert("上传失败");
  75. }
  76. //取消上传
  77. function cancleUploadFile() {
  78. xhr.abort();
  79. }
  80. //function ResultFun() {
  81. // if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200) {
  82. // var iRestStr = xmlHttpRequest.responseText;
  83. // alert(iRestStr);
  84. // }
  85. //}
  86. //??????????
  87. function UpladFile(url, base64data, fileName, callback) {
  88. var fileObj = dataURLtoFile(base64data, fileName); //base64数据转为文件对象
  89. //var murl = "http://localhost:8080/MyServletTest/upload";
  90. var fm = document.forms[0];
  91. var form = new FormData(fm); // FormData ?
  92. form.append("file", fileObj);
  93. xmlHttpRequest = createXmlHttpRequest(); // XMLHttpRequest
  94. xmlHttpRequest.open("post", url, true); //post
  95. xmlHttpRequest.onreadystatechange = function () {
  96. if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200) {
  97. var iRestStr = xmlHttpRequest.responseText;
  98. callback(iRestStr);
  99. //alert("ok");
  100. }
  101. };
  102. // xmlHttpRequest.onload = uploadComplete;
  103. // xmlHttpRequest.onerror = uploadFailed;
  104. // xmlHttpRequest.upload.onprogress = progressFunction;
  105. // xmlHttpRequest.upload.onloadstart = function () {
  106. // ot = new Date().getTime();
  107. // oloaded = 0;
  108. // };
  109. xmlHttpRequest.send(form);
  110. }