HarmonyOS WebView调起媒体选择器文件类型无法区分

​通过WebView onShowFileSelector获取到的acceptType非JS直接传递过来的acceptType,比如JS传递的为

image/*,但是onShowFileSelector获取到的acceptType为:【.tif,.xbm,.tiff,.pjp,.jfif,.bmp,.avif,.apng,.ico,.webp,.svg,.gif,.svgz,.jpg,.jpeg,.pjpeg,.png】

我用的photoAccessHelper.PhotoSelectOptions,里面的MIMEType只能设置大类,如photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE或photoAccessHelper.PhotoViewMIMETypes.VIDEO_TYPE

我们需要实现根据JS页面传入的acceptType来区分后调起媒体选择器的同时区分照片和视频,怎么区分呢?或者怎么直接获取JS的image/*,或者怎么判断?​

HarmonyOS
2024-11-05 11:48:33
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

可以使用下面方法,PhotoViewMIMETypes 这边如果只区分VIDEO_TYPE 和 IMAGE_TYPE,可以设置Image/* 和 Video/的所有类型, 通过getAcceptType 返回的类型判断是否包含在Image/ 或 Video/* 内判断:如下:

import web_webview from '@ohos.web.webview'; 
import picker from '@ohos.file.picker'; 
@Entry 
@Component 
struct WebComponent { 
  controller: web_webview.WebviewController = new web_webview.WebviewController() 
  acceptType: string = '' 
 
  build() { 
    Column() { 
      Web({ src: $rawfile('local.html'), controller: this.controller }) 
        .javaScriptAccess(true) 
        .onShowFileSelector((event) => { 
          console.log('MyFileUploader onShowFileSelector invoked') 
          const regExpImage: Array<string> = ['.tif', '.xbm', '.tiff', '.pjp', '.jfif', '.bmp', '.avif', '.apng', '.ico', '.webp', '.svg', '.gif', '.svgz', '.jpg', '.jpeg', '.pjpeg', '.png'] 
          const regExpVideo: Array<string> = ['.ogm', '.ogv', '.mpg', '.mp4', '.mpeg', '.m4v', '.webm'] 
          let types: Array<string> | undefined = event?.fileSelector.getAcceptType() 
          const photoSelectOptions = new picker.PhotoSelectOptions(); 
          // 过滤选择媒体文件类型为 
          if (types && types.length > 0) { 
            if (regExpImage.some(item => types?.includes(item))) { 
              photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE; 
            } 
            if (regExpVideo.some(item => types?.includes(item))) { 
              photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.VIDEO_TYPE; 
            } 
          } 
          // ... 
          return false 
        }) 
    } 
 
  } 
}
分享
微博
QQ
微信
回复
2024-11-05 17:42:37
相关问题
HarmonyOS 是否有文件类型
176浏览 • 1回复 待解决
HarmonyOS 如何获取文件类型
146浏览 • 1回复 待解决
HarmonyOS 图库选择器
271浏览 • 1回复 待解决
AVRecorder 支持的文件类型
1753浏览 • 1回复 待解决
HarmonyOS 图片选择器怎么实现
306浏览 • 1回复 待解决
HarmonyOS 有状态选择器
284浏览 • 1回复 待解决
HarmonyOS 日期/日历/时间选择器开发
847浏览 • 1回复 待解决
HarmonyOS 地区选择器多级列表效果
653浏览 • 1回复 待解决
HarmonyOS图片选择器相关的问题
742浏览 • 1回复 待解决
HarmonyOS web如何拉起图库选择器
336浏览 • 1回复 待解决
HarmonyOS 如何判断一个url的文件类型
268浏览 • 1回复 待解决
HarmonyOS 如何自定义时间选择器
349浏览 • 1回复 待解决
HarmonyOS 本地图库选择器并编辑图片
297浏览 • 1回复 待解决