最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

渲染進(jìn)程

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

主進(jìn)程

// 主進(jìn)程
// 引入
import { ipcMain, dialog } from "electron";
import path from "path";
import fs from "fs";
import axios from "axios";
// 監(jiān)聽渲染進(jì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];
		// 獲取目標(biāo)文件的路徑
		const destPath = path.join(directoryPath, fileName + ".mp4");
		try {
			// 請(qǐng)求七牛視頻地址接口,獲取視頻
			const response = await axios({
				method: "get",
				url: videoUrl,
				responseType: "stream", // 以流的形式獲取響應(yīng)體,用于寫入文件
			});
			// 在用戶選擇的目標(biāo)文件路徑下創(chuàng)建一個(gè)可寫流
			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)部設(shè)置默認(rèn)下載地址位置

渲染進(jìn)程

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

主進(jìn)程

// 主進(jìn)程
// 引入
import { app, ipcMain, dialog } from "electron";
import path from "path";
import fs from "fs";
import axios from "axios";
// 監(jiān)聽渲染進(jìn)程下載視頻
ipcMain.on("downloadVideo", async (event, videoUrl, fileName) => {
	// 默認(rèn)下載到電腦 downloads 目錄下
	let directoryPath = app.getPath("downloads");
	// 獲取目標(biāo)文件的路徑
	const destPath = path.join(directoryPath, fileName + ".mp4");
	try {
		// 請(qǐng)求七牛視頻地址接口,獲取視頻
		const response = await axios({
			method: "get",
			url: videoUrl,
			responseType: "stream", // 以流的形式獲取響應(yīng)體,用于寫入文件
		});
		// 在用戶選擇的目標(biāo)文件路徑下創(chuàng)建一個(gè)可寫流
		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",
		});
	}
});

代碼中相關(guān)代碼點(diǎn)解釋:

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

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

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

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

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

相關(guān)文章

  • BootStrap Validator 版本差異問題導(dǎo)致的submitHandler失效問題的解決方法

    BootStrap Validator 版本差異問題導(dǎo)致的submitHandler失效問題的解決方法

    這篇文章主要介紹了BootStrap Validator 版本差異問題導(dǎo)致的submitHandler失效問題的解決方法,下面通過本文給大家詳細(xì)說明一下,需要的朋友可以參考下
    2016-12-12
  • JavaScript數(shù)組中reduce方法的應(yīng)用詳解

    JavaScript數(shù)組中reduce方法的應(yīng)用詳解

    JavaScript 中的reduce()方法可以用于將數(shù)組元素匯總為單個(gè)值,,所以本文為大家整理了一些JavaScript數(shù)組中reduce方法的應(yīng)用,需要的可以參考一下
    2023-07-07
  • JavaScript使用正則表達(dá)式獲取全部分組內(nèi)容的方法示例

    JavaScript使用正則表達(dá)式獲取全部分組內(nèi)容的方法示例

    這篇文章主要介紹了JavaScript使用正則表達(dá)式獲取全部分組內(nèi)容的方法,結(jié)合實(shí)例形式分析了javascript正則匹配的相關(guān)操作技巧,需要的朋友可以參考下
    2017-01-01
  • JS實(shí)現(xiàn)時(shí)間選擇器

    JS實(shí)現(xiàn)時(shí)間選擇器

    這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)時(shí)間選擇器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JavaScript 在各個(gè)瀏覽器中執(zhí)行的耐性

    JavaScript 在各個(gè)瀏覽器中執(zhí)行的耐性

    經(jīng)常會(huì)遇到這樣一個(gè)情況:瀏覽器彈出對(duì)話框,提示腳本運(yùn)行時(shí)間過長(zhǎng),詢問“停止”還是“繼續(xù)”。那究竟各個(gè)瀏覽器是如何判斷在什么時(shí)候才彈出此對(duì)話框呢?
    2009-04-04
  • js html5 css俄羅斯方塊游戲再現(xiàn)

    js html5 css俄羅斯方塊游戲再現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了js html5 css俄羅斯方塊游戲?qū)崿F(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 教你JS中的運(yùn)算符乘方、開方及變量格式轉(zhuǎn)換

    教你JS中的運(yùn)算符乘方、開方及變量格式轉(zhuǎn)換

    本文運(yùn)用實(shí)例教大家JS中的運(yùn)算符乘方、開方及變量格式轉(zhuǎn)換,代碼簡(jiǎn)單明了,有需要的可以參考學(xué)習(xí)。
    2016-08-08
  • Js中FileReader讀取文件內(nèi)容方法詳解(async/await)

    Js中FileReader讀取文件內(nèi)容方法詳解(async/await)

    這篇文章主要給大家介紹了關(guān)于Js中FileReader讀取文件內(nèi)容(async/await)的相關(guān)資料,FileReader是前端進(jìn)行文件處理的一個(gè)重要的Api,特別是在對(duì)圖片的處理上,如果你想知道圖片的處理原理,你就永遠(yuǎn)不可能繞過它,需要的朋友可以參考下
    2023-11-11
  • JavaScript數(shù)組方法之findIndex()的用法詳解

    JavaScript數(shù)組方法之findIndex()的用法詳解

    findIndex()方法是一個(gè)非常實(shí)用的數(shù)組方法,可以幫助我們快速查找符合某個(gè)條件的元素,本文給大家介紹JavaScript數(shù)組方法之findIndex()的用法,感謝的朋友跟隨小編一起看看吧
    2023-10-10
  • JavaScript中的淺拷貝和深拷貝原理與實(shí)現(xiàn)淺析

    JavaScript中的淺拷貝和深拷貝原理與實(shí)現(xiàn)淺析

    這篇文章主要介紹了JavaScript中的淺拷貝和深拷貝原理與實(shí)現(xiàn),JavaScript 中的淺拷貝和深拷貝指的是在復(fù)制對(duì)象(包括對(duì)象、數(shù)組等)時(shí),是否只復(fù)制對(duì)象的引用地址或者在復(fù)制時(shí)創(chuàng)建一個(gè)新的對(duì)象
    2023-04-04

最新評(píng)論

琼结县| 石嘴山市| 云阳县| 馆陶县| 平原县| 武陟县| 龙山县| 若羌县| 多伦县| 曲沃县| 玉田县| 玉龙| 格尔木市| 萨迦县| 从化市| 哈尔滨市| 托里县| 衡山县| 慈溪市| 高清| 永胜县| 寿宁县| 广宗县| 云阳县| 阿拉善左旗| 邵阳县| 阳城县| 永城市| 广昌县| 抚顺市| 绵竹市| 神农架林区| 双鸭山市| 定日县| 邯郸县| 新安县| 新源县| 巴林右旗| 蒲江县| 高陵县| 上思县|