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

建个站的网站打不开辛集做网站公司

建个站的网站打不开,辛集做网站公司,东莞微信网站商城建设,展示型网站设计公司##鸿蒙核心技术##运动开发##Core File Kit#xff08;文件基础服务#xff09;##Preview Kit#xff08;文件预览服务#xff09;# 在 HarmonyOS 开发中#xff0c;文件预览功能是一个常见的需求#xff0c;尤其是在处理用户上传的图片、文档、音频或视频等资源时。然而文件基础服务##Preview Kit文件预览服务# 在 HarmonyOS 开发中文件预览功能是一个常见的需求尤其是在处理用户上传的图片、文档、音频或视频等资源时。然而实现文件预览并非一帆风顺尤其是在涉及文件权限和预览窗口管理时。本文将以“选择好的文件进行预览”为主题深入解析 HarmonyOS 中文件预览的核心要点并分享一些实际开发中的经验技巧帮助开发者避免常见的坑。 前言文件预览的痛点与挑战 在 HarmonyOS 中文件预览功能看似简单实则暗藏诸多细节。开发者常常会遇到诸如文件权限不足、预览窗口无法正常打开或重复打开等问题。这些问题不仅影响用户体验还可能导致应用崩溃或数据丢失。因此掌握正确的文件预览实现方式至关重要。 核心要点文件 URI 权限持久化 在 HarmonyOS 中通过DocumentViewPicker拿到的文件 URI 仅具有临时权限这种权限无法直接用于文件预览否则会导致预览失败。因此我们需要对文件 URI 进行持久化权限处理。 权限持久化代码解析 await fileShare.persistPermission([{uri: uri,operationMode: fileShare.OperationMode.READ_MODE} ]);• fileShare.persistPermission这是关键的持久化方法它将文件 URI 的权限从临时变为持久确保预览功能能够正常访问文件。 • uri这是文件的路径需要确保其格式正确。 • operationMode这里指定为READ_MODE表示仅授予读取权限这是预览功能所需要的最低权限。 此外为了使用persistPermission方法还需要在应用的config.json文件中声明以下权限 {name: ohos.permission.FILE_ACCESS_PERSIST }获取文件 MIME 类型 在预览文件之前我们需要明确文件的 MIME 类型这对于预览功能的正确性至关重要。以下是获取 MIME 类型的代码实现 private getMimeType(filePath: string): string {const extension filePath.split(.).pop()?.toLowerCase() || ;switch (extension) {case jpg:case jpeg:return image/jpeg;case png:return image/png;case gif:return image/gif;case bmp:return image/bmp;case webp:return image/webp;case mp4:return video/mp4;case mov:return video/quicktime;case avi:return video/x-msvideo;case mp3:return audio/mpeg;case wav:return audio/wav;case ogg:return audio/ogg;case txt:case log:return text/plain;case html:case htm:return text/html;default:return application/octet-stream;} }代码解析 • filePath.split(.).pop()通过文件路径获取文件扩展名这是判断 MIME 类型的关键。 • switch语句根据扩展名返回对应的 MIME 类型。这里涵盖了常见的图片、视频、音频、文本和 HTML 文件类型。 • 默认值如果文件类型无法识别则返回application/octet-stream这是一种通用的二进制流类型。 预览文件的实现细节 预览文件的实现涉及多个步骤包括检查文件是否存在、是否可预览、准备预览参数以及管理预览窗口。以下是完整的代码实现 async previewFile(): Promisevoid {if (!this.selectedFilePath) {promptAction.showToast({ message: 请先选择文件, duration: 2000 });return;}try {let uiContext this.getUIContext().getHostContext() as Context;// 1. 检查文件是否存在try {await fs.access(this.selectedFilePath);} catch {promptAction.showToast({ message: 文件不存在或不可访问, duration: 2000 });return;}// 2. 检查是否可预览const uri this.selectedFilePath.startsWith(file://) ?this.selectedFilePath :file://${this.selectedFilePath};await fileShare.persistPermission([{uri: uri,operationMode: fileShare.OperationMode.READ_MODE}]);const canPreview await filePreview.canPreview(uiContext, uri);if (!canPreview) {promptAction.showToast({ message: 不支持预览此文件类型, duration: 2000 });return;}// 3. 准备预览参数const fileInfo: filePreview.PreviewInfo {title: this.fileName,uri: uri,mimeType: this.getMimeType(this.selectedFilePath)};// 4. 检查是否已有预览窗口const hasDisplayed await filePreview.hasDisplayed(uiContext);if (hasDisplayed) {// 已有窗口则关闭await filePreview.closePreview(uiContext)} else {// 新开预览窗口const displayInfo: filePreview.DisplayInfo {x: 100, // 窗口起始x坐标y: 100, // 窗口起始y坐标width: 800, // 窗口宽度height: 800 // 窗口高度};await filePreview.openPreview(uiContext, fileInfo, displayInfo);}console.info(文件预览成功);} catch (err) {const error err as BusinessError;console.error(预览失败错误码: ${error.code}, 错误信息: ${error.message});promptAction.showToast({message: 预览失败: ${error.message},duration: 2000});} }代码解析 • 检查文件是否存在通过fs.access方法检查文件路径是否有效。 • 持久化文件权限使用fileShare.persistPermission方法确保文件 URI 具有持久化读取权限。 • 检查是否可预览调用filePreview.canPreview方法判断文件类型是否支持预览。 • 准备预览参数构建filePreview.PreviewInfo对象包含文件标题、URI 和 MIME 类型。 • 管理预览窗口通过filePreview.hasDisplayed检查是否已有预览窗口。如果存在则调用filePreview.closePreview关闭窗口如果不存在则调用filePreview.openPreview新开预览窗口。 总结文件预览的正确实现之道 在 HarmonyOS 开发中实现文件预览功能需要关注文件权限、MIME 类型获取以及预览窗口管理等多个方面。
http://www.tj-hxxt.cn/news/225007.html

相关文章:

  • 哪些购物网站做的比较简洁有品质wordpress弹窗
  • 湘潭市 网站建设如何做双语网站
  • 网站营销单页怎么设计方案招投标网站开发费用
  • 诚讯通网站网站的建设
  • 西安营销网站建设公司做网站彩票代理多少钱啊
  • 手机网站怎么做域名解析广州英文建站公司
  • 扁平化手机网站模板陕西省平安建设网站
  • 专业的网站开发公司电话上海做网站天锐
  • 装潢公司网站源码php封面设计用什么软件做
  • 网站建设 案例展示网站原型怎么做
  • 网站建设预计资金投入天美传媒传媒官网免费下载
  • 廊坊网站搜索优化百度搜索引擎怎么做
  • 广州网站建设菲利宾手机百度下载安装
  • 长春做高端网站公司营销推广内容
  • 那个网站做图片比较赚钱售后好的品牌策划公司
  • 黑龙江省住房和建设厅网站首页洛阳理工学院教务管理系统
  • 个人无网站怎样做cps广告电子报刊的传播媒体是什么
  • 什么网站好建设wordpress支付宝当面付插件
  • 昆明网站建设哪家好iis 配置 wordpress
  • 怎么才能让百度收录网站wordpress文章推送公众号
  • 花网站开发背景物业管理系统和物业管理软件
  • 沧州哪家做网站好wordpress 支持rar
  • 企业管理咨询公司注册条件河北百度seo点击软件
  • 山东专业企业网站建设做企业网站报价
  • 网站外链接自己可以怎么做wordpress建站不好用
  • 郑州网站维护电商网站开发ppt
  • 折扣网站怎么做wordpress 显示视频
  • 专业集团门户网站建设wordpress数组转字符串
  • 山东专业网站建设苏州网站
  • 网站获得流量最好的方法是什么 ( )在国外做网站