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 是否有文件类型
65浏览 • 1回复 待解决
HarmonyOS 如何获取文件类型
41浏览 • 1回复 待解决
AVRecorder 支持的文件类型
1552浏览 • 1回复 待解决
HarmonyOS 图片选择器怎么实现
73浏览 • 1回复 待解决
HarmonyOS 有状态选择器
40浏览 • 1回复 待解决
HarmonyOS图片选择器相关的问题
498浏览 • 1回复 待解决
HarmonyOS 日期/日历/时间选择器开发
544浏览 • 1回复 待解决
HarmonyOS 地区选择器多级列表效果
418浏览 • 1回复 待解决
HarmonyOS web如何拉起图库选择器
39浏览 • 1回复 待解决
HarmonyOS 如何自定义时间选择器
69浏览 • 1回复 待解决
TimePicker如何设置时间选择器的范围?
7023浏览 • 1回复 待解决
HarmonyOS picker选择器的数据源问题
8浏览 • 1回复 待解决
自定义日期滑动选择器弹窗
422浏览 • 1回复 待解决
鸿蒙可以实现状态选择器吗?
6294浏览 • 1回复 已解决