最近我在做一個網站,需要對用戶上傳的視頻進行處理。我使用了Vue.js來實現上傳功能。但是,當我測試了一下用戶上傳視頻的功能時,發現視頻總是上傳失敗。
接著,我認真檢查了代碼,發現我已經在前端實現了上傳視頻的功能。當用戶點擊上傳按鈕時,會調用Vue組件中的uploadVideo方法。該方法會調用axios.post()函數來發送視頻流到后端API中,以進行處理。
uploadVideo() { let data = new FormData(); data.append('video', this.currentVideo); axios.post('http://localhost:8080/api/upload-video', data, { headers: { 'Content-Type': 'multipart/form-data' }, onUploadProgress: (progressEvent) =>{ this.uploadPercentage = parseInt((progressEvent.loaded / progressEvent.total) * 100) } }).then(response =>{ console.log(response.data); }).catch(error =>{ console.log(error); }); }
然后,我檢查了后端API代碼,發現只是簡單地讀取視頻內容并將其保存到本地文件系統中。具體代碼如下:
const multer = require('multer'); const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, './videos'); }, filename: function (req, file, cb) { cb(null, `${file.originalname}`); } }); const upload = multer({ storage: storage }); app.post('/api/upload-video', upload.single('video'), (req, res) =>{ res.send('Video uploaded successfully'); });
在我進一步分析代碼的過程中,我發現問題在于我的后端API沒有正確設置上傳視頻的大小限制。因此,當用戶上傳大型視頻時,API會在上傳完成之前超時關閉連接。這就導致了視頻上傳失敗。
為了解決這個問題,我通過在API代碼中添加以下代碼,來設置最大上傳視頻大小為100MB。
const upload = multer({ storage: storage, limits: { fileSize: 100 * 1024 * 1024 } });
經過測試,我發現視頻上傳功能正常運行。我現在很高興地能夠在Vue.js應用程序中上傳視頻了。