httpclient 分片上传文件_文件分片上传

4141177f803d32063ea8efcbfea9836c.png

大文件上传

场景分析

在业务场景中文件上传很普遍,而大文件的上传经常会导致上传时长过久,大量占用带宽资源,而分片上传就解决了目前的问题。

解决方案

前端

  • 获取文件进行分片
  • 请求服务端过滤出未保存的分片
  • 未保存分片上传 Promise限流
  • 上传完毕,发送合并分片请求
import React from 'react';
import {
     uploadFetch } from './utils/upload';
import ConcurrentUtil from './utils/concurrent'
import "./file.css";

export default class FileContainer extends React.Component {
    
    constructor() {
    
        super();
        this.concurrent = new ConcurrentUtil(this.uploadRequest,this.mergeRequest);
        this.state = {
    
            file: null,
            fileSplit: [],
        };
    }

    onChange = (event) => {
    
        event.persist();
        const [file] = event.target.files;
        this.setState({
    
            file
        });
        this.concurrent.setState({
    
            file
        });
        event.preventDefault();
    }

    handleSubmit = async (event) => {
    
        event.preventDefault();
        const startTime = new Date().getTime(),
            {
     name: file_name } = this.state.file;
        console.log("start at: -----> ", startTime);
        //1.请求服务端,查找对应文件块
        const {
     data: {
     list: pathList } } = await uploadFetch({
    
            action: '/v1/resources/blobs',
            data: {
    
                file_name
            }
        })
        this.concurrent.handleUpload(pathList)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值