当前位置: 首页 > news >正文

专门做旅游的视频网站有哪些设计工作一般多少工资

专门做旅游的视频网站有哪些,设计工作一般多少工资,网站设计合同注意事项,二元期权网站建设有一个需求是需要将本地上传的文件或者网络下载的文件存储到本地,并展示在前端页面上的。其实如果只是加载本地文件,然后展示还是挺简单的,可以看我的文章:tauri程序加载本地图片或者文件在前端页面展示-CSDN博客 要想实现上述需…

有一个需求是需要将本地上传的文件或者网络下载的文件存储到本地,并展示在前端页面上的。其实如果只是加载本地文件,然后展示还是挺简单的,可以看我的文章:tauri程序加载本地图片或者文件在前端页面展示-CSDN博客

要想实现上述需求,需要三个步骤,配置相应的文件和文件夹访问权限,然后将文件存储到软件的相应目录中,再从目录中加载这个资源并展示。

配置访问权限

如果你需要通过弹窗选择加载本地文件,需要配置dialog权限,存储文件需要配置存储目录权限fs下面的scope和path权限,想要加载文件并在前端页面可以访问,需要配置资产协议访问权限protocol。其中scope是你要存储文件到哪个路径下,assetScope是你要访问哪些路径下的资源。

            "path": {"all": true},"fs": {"all": true,"readFile": true,"writeFile": true,"readDir": true,"copyFile": true,"createDir": true,"removeDir": true,"removeFile": true,"renameFile": true,"exists": true,"scope": ["$CACHE/PakePlus/*", "$APPDATA/*"]},"dialog": {"all": true,"ask": true,"confirm": true,"message": true,"open": true,"save": true},"protocol": {"all": true,"asset": true,"assetScope": ["$PICTURE", "$CACHE/*"]},

存储文件到本地

加载本地文件并存储到软件指定的文件夹中,这里需要读取到文件的内容,如果是图片文件,需要读为二进制内容,并进行存储。

import { writeBinaryFile, BaseDirectory } from '@tauri-apps/api/fs';
import { appDataDir } from '@tauri-apps/api/path';const saveImageToAppData = async (filePath) => {// 读取原始图片文件const response = await fetch(filePath);const imageBlob = await response.blob();const imageArrayBuffer = await imageBlob.arrayBuffer();const imageData = new Uint8Array(imageArrayBuffer);// 获取应用数据目录const appDataDirPath = await appDataDir();// 拼接文件保存路径const fileName = filePath.split('/').pop();  // 获取原始文件名const savePath = `${appDataDirPath}/${fileName}`;// 将图片保存到应用数据目录await writeBinaryFile(savePath, imageData, { dir: BaseDirectory.AppData });console.log(`Image saved to: ${savePath}`);return savePath;
}

或者使用前端的input标签选中文件拿到base64编码的文件,然后转为ArrayBuffer再进行存储:

        <inputid="open"type="file"name="filename"style="display: none"@change="changeFile"/>// iconInput change
const changeFile = (event: any) => {// get base64 contentconst file = event.target.files[0] // 获取文件console.log('file---', file)if (file) {appForm.icon = file.nameconsole.log('file---', event.target.files)// appForm.icon = event.target.files.nameconst reader = new FileReader() // 创建FileReader对象reader.onload = function (e: any) {const base64String = e.target.result.split('base64,')[1] // 获取Base64编码console.log('base64String---', base64String) // 打印Base64编码内容// save image to datadirsaveImage(file.name, base64String)}reader.readAsDataURL(file) // 将文件读取为Base64}
}// save image file to datadir
const saveImage = async (fileName: string, base64: string) => {// base64 to arraybufferconst imageArrayBuffer = base64ToArrayBuffer(base64)// save fileconst imageData = new Uint8Array(imageArrayBuffer)// 获取应用数据目录const appDataPath = await resourceDir()console.log('appDataPath------', appDataPath)// 拼接文件保存路径const savePath = `${appDataPath}${fileName}`// 将图片保存到应用数据目录await writeBinaryFile(savePath, imageData, {dir: BaseDirectory.Cache,})console.log(`Image saved to: ${savePath}`)appForm.desc = savePathconst filePath = await join(appDataPath, fileName)console.log('filePath---', filePath)const assetUrl = convertFileSrc(filePath)console.log('assetUrl---', assetUrl)localImagePath.value = assetUrl
}// 将base64转换为ArrayBuffer
const base64ToArrayBuffer = (base64: string) => {// 创建一个新的 ArrayBufferconst binaryString = atob(base64)const len = binaryString.lengthconst arrayBuffer = new ArrayBuffer(len)const uint8Array = new Uint8Array(arrayBuffer)// 将二进制字符串中的字符逐个存入 Uint8Arrayfor (let i = 0; i < len; i++) {uint8Array[i] = binaryString.charCodeAt(i)}return arrayBuffer
}

加载文件为Url

读取保存的文件内容,并展示到页面上,需要拿到存储的路径,然后通过convertFileSrc这个api将文件路径转化为前端可以直接访问的文件:

    const filePath = await join(appDataPath, fileName)console.log('filePath---', filePath)const assetUrl = convertFileSrc(filePath)console.log('assetUrl---', assetUrl)localImagePath.value = assetUrl

如果是图片文件,直接将url设置进去就可以了。

报错解决

1.Unhandled Promise Rejection: The `Path` module is not enabled. You must enable one of its APIs in the allowlist.

这是因为没有开启path路径访问权限:

http://www.yayakq.cn/news/751905/

相关文章:

  • 企业网站怎么做连接公众号里的电影网站怎么做的
  • 网站301是什么做牙网站
  • 大理石在哪些网站做宣传购买淘宝店铺在哪个平台
  • 专业做苗木的网站腾讯云快速搭建网站
  • 前端做网站如何做网站的教程二维码
  • 有什么做服装的网站吗app网站开发公司的logo
  • 局域网内建立网站加工平台网站
  • 网站收录平台方法流量网站怎么做
  • 如何做慕课网站德州整站优化
  • 网站后台管理系统软件福建省住房和城乡建设局网站
  • 关于网站建设的外文文献网站 app
  • o2o网站建设咨询模板建站和开发网站区别
  • 西安做视频网站公司长沙铭万做网站
  • 北京高端网站制作南昌住房建设局网站
  • 在国外网站建设河南省新闻出版学校
  • 休闲采摘园网站建设物流企业网站建设方案
  • 昆明市住房和城乡建设局门户网站一个空间可以建多个网站
  • 百度网站建设及推广wordpress 按时间显示文章
  • 备案时网站名称怎么写自己做网站教程
  • 网站平台建设合同推广网站的公司
  • 班级网站建设组织机构怎样在手机上无货源开店
  • 规范门户网站的建设和管理办法解析网站接口怎么做
  • 怎么可以上传自己做的网站智能科技公司取名字大全
  • 手机网站地址怀化二手车网站
  • 网站开发需要哪些知识大作设计网站作品
  • 股票实时交易网站开发站长工具无吗经典
  • 建筑企业网站有哪些可以自己设计房子室内装修的软件
  • 上海专业做网站的公司有哪些wordpress100万数据
  • 网站建设哪家好采用苏州久远网络邯郸网站改版费用
  • 怎么做电商网站 用户画像wordpress 微信分享插件