前端笔记之js/ts 文件上传服务

没事记记笔记,省得以后用到还得忘了还得百度。话不多说直接上代码:
js版本

/**
 * @param file 文件
 */
function importPlan(event) {
  const request = new XMLHttpRequest();
  const fileList = event.target.files;
  if (fileList.length > 0) {
    return new Promise((resolve, reject) => {
      const file = fileList[0];
      const formData = new FormData();
      formData.append('file', file);
      request.open('POST', '上传路径');
      request.send(formData);
      // tslint:disable-next-line: only-arrow-functions
      request.onreadystatechange = function() {
        // readyState:
          // 0: 请求未初始化
          // 1: 服务器连接已建立
          // 2: 请求已接收
          // 3: 请求处理中
          // 4: 请求已完成,且响应已就绪
        // status:
          // 200: 'ok'
          // 404: 未找到页面或接口
        // xhr.responseText: 后端返回的数据
        if (request.readyState === 4 && request.status === 200) {
          return resolve(request.response);
        }
      };
    });
  }
}

ts版本

/**
 * @param file 文件
 */
  importPlan(event) {
      const request = new XMLHttpRequest();
      const fileList: FileList = event.target.files;
      if (fileList.length > 0) {
          return new Promise((resolve, reject) => {
              const file: File = fileList[0];
              const formData: FormData = new FormData();
              formData.append('file', file);
              request.open('POST', ’上传路径‘);
              request.send(formData);
              // tslint:disable-next-line: only-arrow-functions
              request.onreadystatechange = function() {
                  // readyState:
                      // 0: 请求未初始化
                      // 1: 服务器连接已建立
                      // 2: 请求已接收
                      // 3: 请求处理中
                      // 4: 请求已完成,且响应已就绪
                  // status:
                      // 200: 'ok'
                      // 404: 未找到页面或接口
                  // xhr.responseText: 后端返回的数据
                  if (request.readyState == 4 && request.status == 200) {
                      return resolve(request.response);
                  }
              };
          });
      }
  }

两者只在细微处有区别,调用这个方法的时候一定要有异步调用,如下:

handlePromise = async () =>{
    let getValue  = await this.importPlan();  // 异步获取 Promise  抛出的状态值
    console.log('Promise 的状态值: ',getValue.value);
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值