欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

electron項目中實現(xiàn)視頻下載保存到本地的方式

 更新時間:2024年07月21日 11:19:30   作者:DLGDark  
這篇文章主要介紹了electron項目中實現(xiàn)視頻下載保存到本地的兩種實現(xiàn)方式,每種方式結合實例代碼給大家介紹的非常詳細,需要的朋友參考下吧

第一種方式:用戶自定義選擇下載地址位置

渲染進程

// 渲染進程
// 引入
import { ipcRenderer } from "electron";
// 列表行數(shù)據(jù)下載視頻操作,diffVideoUrl 是視頻請求地址
handleDownloadClick(row) {
  if (!row.diffVideoUrl) {
    this.$message.error("暫無視頻,請稍后重試下載");
  } else {
    //渲染線程主動發(fā)送 downloadVideo事件到主線程請求下載視頻
    ipcRenderer.send("downloadVideo", row.diffVideoUrl, row.orderCode);
  }
}

主進程

// 主進程
// 引入
import { ipcMain, dialog } from "electron";
import path from "path";
import fs from "fs";
import axios from "axios";
// 監(jiān)聽渲染進程下載視頻
ipcMain.on("downloadVideo", async (event, videoUrl, fileName) => {
	let result = await dialog.showOpenDialog({
		properties: ["openDirectory", "createDirectory", "promptToCreate"],
	});
	if (!result.canceled) {
		// 用戶選擇的路徑
		let directoryPath = result.filePaths[0];
		// 獲取目標文件的路徑
		const destPath = path.join(directoryPath, fileName + ".mp4");
		try {
			// 請求七牛視頻地址接口,獲取視頻
			const response = await axios({
				method: "get",
				url: videoUrl,
				responseType: "stream", // 以流的形式獲取響應體,用于寫入文件
			});
			// 在用戶選擇的目標文件路徑下創(chuàng)建一個可寫流
			const ws = fs.createWriteStream(destPath);
			// 將數(shù)據(jù)流保存到文件中
			response.data.pipe(ws);
			dialog.showMessageBox(mainWindow, {
				message: "已下載成功!",
				type: "none",
			});
		} catch (error) {
			console.log(error);
			dialog.showMessageBox(mainWindow, {
				message: "下載失?。?,
				type: "none",
			});
		}
	}
});

第二種方式:系統(tǒng)內(nèi)部設置默認下載地址位置

渲染進程

// 渲染進程
// 引入
import { ipcRenderer } from "electron";
// 列表行數(shù)據(jù)下載視頻操作,diffVideoUrl 是視頻請求地址
handleDownloadClick(row) {
  if (!row.diffVideoUrl) {
    this.$message.error("暫無視頻,請稍后重試下載");
  } else {
    //渲染線程主動發(fā)送 downloadVideo事件到主線程請求下載視頻
    ipcRenderer.send("downloadVideo", row.diffVideoUrl, row.orderCode);
  }
}

主進程

// 主進程
// 引入
import { app, ipcMain, dialog } from "electron";
import path from "path";
import fs from "fs";
import axios from "axios";
// 監(jiān)聽渲染進程下載視頻
ipcMain.on("downloadVideo", async (event, videoUrl, fileName) => {
	// 默認下載到電腦 downloads 目錄下
	let directoryPath = app.getPath("downloads");
	// 獲取目標文件的路徑
	const destPath = path.join(directoryPath, fileName + ".mp4");
	try {
		// 請求七牛視頻地址接口,獲取視頻
		const response = await axios({
			method: "get",
			url: videoUrl,
			responseType: "stream", // 以流的形式獲取響應體,用于寫入文件
		});
		// 在用戶選擇的目標文件路徑下創(chuàng)建一個可寫流
		const ws = fs.createWriteStream(destPath);
		// 將數(shù)據(jù)流保存到文件中
		response.data.pipe(ws);
		dialog.showMessageBox(mainWindow, {
			message: "已下載成功!",
			type: "none",
		});
	} catch (error) {
		console.log(error);
		dialog.showMessageBox(mainWindow, {
			message: "下載失?。?,
			type: "none",
		});
	}
});

代碼中相關代碼點解釋:

mainWindownew BrowserWindow() 創(chuàng)建應用程序窗口,此處省略相關代碼,例子代碼如下:

// 在主進程中.
const { BrowserWindow } = require('electron')
const mainWindow = new BrowserWindow({ width: 800, height: 600 })

dialog.showOpenDialog 參考官方文檔:dialog.showOpenDialog

app.getPath 參考官方文檔:app.getPath

到此這篇關于electron項目中實現(xiàn)視頻下載保存到本地的文章就介紹到這了,更多相關electron視頻下載保存到本地內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論