切片上傳

1.Resumable.js 是一個(gè)開(kāi)源的 JavaScript 庫(kù),專(zhuān)為大文件(如 MP4)設(shè)計(jì),支持分片上傳。它可以將一個(gè)大的文件分成多個(gè)小塊進(jìn)行上傳,每個(gè)小塊上傳完成后再上傳下一個(gè)。它還支持?jǐn)帱c(diǎn)續(xù)傳功能,即使在上傳過(guò)程中遇到網(wǎng)絡(luò)問(wèn)題,也可以從斷點(diǎn)繼續(xù)。

var r = new Resumable({
  target: '/upload',  // 服務(wù)器端處理上傳請(qǐng)求的URL
  query: { upload_token: 'some_token' },
  testChunks: true,  // 測(cè)試每個(gè)分片是否有效
  chunkSize: 1 * 1024 * 1024  // 每個(gè)分片的大小,這里是 1MB
});

// 選擇文件上傳
r.assignBrowse(document.getElementById('file-upload-button'));

// 開(kāi)始上傳
r.on('fileAdded', function(file) {
  r.upload();
});

// 上傳成功
r.on('fileSuccess', function(file, message) {
  console.log('Upload complete', message);
});

// 上傳失敗
r.on('fileError', function(file, message) {
  console.log('Upload failed', message);
});

后端接收示例(node.js)

const fs = require('fs');
const path = require('path');

// 假設(shè)文件上傳路徑為 /upload
app.post('/upload', (req, res) => {
  const chunk = req.files.chunk;  // 上傳的切片
  const filename = req.query.filename;  // 文件名
  const chunkIndex = req.query.chunkIndex;  // 切片索引

  const tempDir = path.join(__dirname, 'uploads', filename);
  fs.appendFileSync(tempDir, chunk.data);  // 將切片合并

  res.send('Chunk uploaded successfully');
});

2.fine-uploader.js

var uploader = new qq.FineUploader({
    element: document.getElementById('upload-container'),
    request: {
        endpoint: '/upload'
    },
    chunking: {
        enabled: true,
        partSize: 5 * 1024 * 1024  // 每個(gè)分片的大小為 5MB
    },
    callbacks: {
        onComplete: function(id, name, response) {
            console.log("Upload complete:", name);
        },
        onError: function(id, name, errorReason) {
            console.log("Error uploading file:", name);
        }
    }
});

3.tus-node-server

var upload = new tus.Upload(file, {
  endpoint: "http://localhost:1080/files/",
  retryDelays: [0, 3000, 5000, 10000],
  chunkSize: 5 * 1024 * 1024, // 5MB
});

upload.start();
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容