js上传文件;input上传文件;

小灰灰 2021-09-07 06:20 763阅读 0赞

html原生上传文件方式1:
在这里插入图片描述

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>Document</title>
  6. <script></script>
  7. </head>
  8. <body>
  9. <div>
  10. 选择文件(可多选):
  11. <input type="file" id="f1" multiple /><br /><br />
  12. <button type="button" id="btn-submit">上 传</button>
  13. </div>
  14. <script>
  15. function submitUpload() {
  16. //获得文件列表,注意这里不是数组,而是对象
  17. var fileList = document.getElementById("f1").files;
  18. console.log(document.getElementById("f1"), fileList);
  19. if (!fileList.length) {
  20. alert("请选择文件");
  21. return;
  22. }
  23. var file = new FormData(); //构造FormData对象
  24. // file.append('title', document.getElementById('title').value);
  25. //多文件上传需要遍历添加到 fromdata 对象
  26. for (var i = 0; i < fileList.length; i++) {
  27. file.append("file", fileList[i]); //支持多文件上传
  28. }
  29. for (var value of file.values()) {
  30. console.log(value);
  31. }
  32. console.log(file);
  33. var xhr = new XMLHttpRequest(); //创建对象
  34. xhr.open("POST", "https://dcdn-jiazheng.21cs.cn/file/upload");
  35. // xhr.setRequestHeader("Content-Type", "multipart/form-data");
  36. // xhr.setRequestHeader("Authorization", token);
  37. xhr.send(file); //发送时 Content-Type默认就是: multipart/form-data;
  38. xhr.onreadystatechange = function () {
  39. console.log("state change", xhr.readyState);
  40. if (this.readyState == 4 && this.status == 200) {
  41. var obj = JSON.parse(xhr.responseText); //返回值
  42. console.log(obj);
  43. if (obj.data) {
  44. alert("上传成功");
  45. }
  46. }
  47. };
  48. }
  49. //绑定提交事件
  50. document
  51. .getElementById("btn-submit")
  52. .addEventListener("click", submitUpload);
  53. </script>
  54. </body>
  55. </html>

html原生上传文件方式2:

在这里插入图片描述

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta
  6. name="viewport"
  7. content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"
  8. />
  9. <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  10. <title>Document</title>
  11. <style>
  12. #progress {
  13. height: 10px;
  14. width: 500px;
  15. border: 1px solid gold;
  16. position: relative;
  17. border-radius: 5px;
  18. }
  19. #progress .progress-item {
  20. height: 100%;
  21. position: absolute;
  22. left: 0;
  23. top: 0;
  24. background: chartreuse;
  25. border-radius: 5px;
  26. transition: width 0.3s linear;
  27. }
  28. </style>
  29. </head>
  30. <body>
  31. 文件上传框<br />
  32. <input type="file" id="file" /><br />
  33. 显示进度条<br />
  34. <div id="progress">
  35. <div class="progress-item"></div>
  36. </div>
  37. 上传成功后的返回内容<br />
  38. <span id="callback"></span>
  39. </body>
  40. <script>
  41. //首先监听input框的变动,选中一个新的文件会触发change事件
  42. document.querySelector("#file").addEventListener("change", function () {
  43. //获取到选中的文件
  44. var file = document.querySelector("#file").files[0];
  45. //创建formdata对象
  46. var formdata = new FormData();
  47. formdata.append("file", file);
  48. //创建xhr,使用ajax进行文件上传
  49. var xhr = new XMLHttpRequest();
  50. xhr.open("post", "https://dcdn-jiazheng.21cs.cn/file/upload");
  51. //回调
  52. xhr.onreadystatechange = function () {
  53. if (xhr.readyState == 4 && xhr.status == 200) {
  54. document.querySelector("#callback").innerText = xhr.responseText;
  55. }
  56. };
  57. //获取上传的进度
  58. xhr.upload.onprogress = function (event) {
  59. if (event.lengthComputable) {
  60. var percent = (event.loaded / event.total) * 100;
  61. document.querySelector("#progress .progress-item").style.width =
  62. percent + "%";
  63. }
  64. };
  65. //将formdata上传
  66. xhr.send(formdata);
  67. });
  68. </script>
  69. </html>

其他好的上传组件

发表评论

表情:
评论列表 (有 0 条评论,763人围观)

还没有评论,来说两句吧...

相关阅读