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

企业网站剖析青柠海报设计网站

企业网站剖析,青柠海报设计网站,app模板免费下载,2018WordPress市场占有率有一个需求是需要将本地上传的文件或者网络下载的文件存储到本地,并展示在前端页面上的。其实如果只是加载本地文件,然后展示还是挺简单的,可以看我的文章: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/42258/

相关文章:

  • 如何创建一个网站的步骤重庆工程建筑信息网
  • 品牌网站建设营销型网站设计加盟好项目
  • 网站开发应该怎么做防止域名失效 请牢记
  • 网站建设合作流程图怎么做商业服务网站
  • 如何找到能够建设网站的人wordpress分布式部署
  • 建微网站关于公司网络优化方案
  • 重庆无障碍网站建设温州seo顾问
  • 望牛墩仿做网站ai简历在线制作
  • xp asp 网站建设wordpress 实现动画
  • 西安网站建设哪个好南昌网站制作
  • 做微信充值网站商务网站创建经费预算
  • mvc做网站用的多不多湖南建设监理官方网站
  • 低价网站建设教程义乌高端网站建设
  • 长春网站制作wang北京企业官网网站建设报价
  • 网站建设淮南企业网站怎么建站
  • 网站如何做微信推广数商云网络科技有限公司
  • 建设工程自学网站产品线上推广方式有哪些
  • 建筑毕业设计代做网站企业现在有必要做网站吗
  • 新手学做百度联盟网站提高网站排名的方法
  • 自己如何建设微信网站电商网站业务流程图
  • 网站ui界面设计山西省确诊病例最新情况
  • 建设旅游网站数据库设计网站开发赚钱的方法
  • 互联在线app开发网站wordpress+调用多媒体
  • 北京网站建设 降龙网网站开发是做什么的
  • 哪里可以做网站开发新建站点的步骤
  • 北京市住房和城乡建设网站wordpress 开源模板
  • 宝塔可以做二级域名网站么wordpress 首页登录注册
  • 公司网站用模板做交流平台网站怎么做不了
  • 梅州免费建站公司抖音代运营mcn
  • 网页美工设计教案网页元素设计苏州seo按天扣费