HarmonyOS web组件上传文件

web的onShowFileSelector回调如何搭配自定义弹窗CustomDialog,实现文件上传。

HarmonyOS
2024-11-07 11:29:31
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

​首先在h5中有type为file的input标签,并在onchange事件中监听文件的改变 ,在用户按下按钮时,在onShowFileSelector中会监听到该事件。

然后通过startAbilityForResult去拉起文j件管理,参数:

type可以过滤文件类型。

num是最大选择文件数。

location是文件存储位置,目前仅支持本地。

windowMode是窗口模式。

当用户选择完文件后,文件管理会以datashare这种uri形式返回过来,在拿到uri后 将其从公共目录copy到应用沙箱路径下,然后将应用沙箱路径通过handleFileList接口传入h5中。

最后onShowFileSelector的返回值,返回true时目前还不支持系统默认弹窗​。

import business_error from '@ohos.base' 
import web_webview from '@ohos.web.webview' 
import common from '@ohos.app.ability.common'; 
import hilog from '@ohos.hilog'; 
 
 
@Entry 
@Component 
struct WebComponent { 
  controller: web_webview.WebviewController = new web_webview.WebviewController() 
  context = getContext(this) as common.UIAbilityContext; 
  async filePicker(){ 
    const abilityResult =await this.context.startAbilityForResult( 
      { 
        action:"ohos.want.action.OPEN_FILE", 
        parameters:{ 
          'key_pick_type':'image/*', 
          'key_pick_num':10, 
          'key_pick_location':[0] 
        } 
      } 
    ); 
    const select_item_list = abilityResult?.want?.parameters; 
    return select_item_list; 
  } 
 
 
  build() { 
    Column() { 
      Web({src:$rawfile('file.html'),controller:this.controller}) 
        .onShowFileSelector((event)=>{ 
          hilog.info(0x0000, 'testTag', '%{public}s', 'Ability---onCreate'); 
          this.filePicker().then(async(filePaths)=>{ 
            if(!filePaths){ 
              event?.result?.handleFileList([]); 
              return; 
            } 
            const uri =filePaths[0]; 
            event?.result?.handleFileList([JSON.stringify(uri)]); 
          }) 
          return true; 
        }) 
    } 
  } 
} 
 
 
<input type="file" onchange="uploadChange(event)"/>
分享
微博
QQ
微信
回复
2024-11-07 16:19:05
相关问题
Web组件如何实现文件上传功能?
415浏览 • 1回复 待解决
HarmonyOS web上传文件和图片
263浏览 • 1回复 待解决
HarmonyOS上传文件问题
558浏览 • 1回复 待解决
HarmonyOS 如何上传文件
53浏览 • 1回复 待解决
HarmonyOS 上传文件相关Demo
496浏览 • 1回复 待解决
HarmonyOS Web组件加载html文件异常
520浏览 • 1回复 待解决
HarmonyOS文件上传怎么写
545浏览 • 1回复 待解决
HarmonyOS Web 图片上传功能失效
232浏览 • 1回复 待解决
HarmonyOS日志文件上传问题
576浏览 • 1回复 待解决
HarmonyOS 文件上传 & 资源读取问题
554浏览 • 1回复 待解决
web组件对html文件的加载
783浏览 • 1回复 待解决
HarmonyOS 文件上传服务器问题
350浏览 • 1回复 待解决
HarmonyOS 上传 app 文件, 提示 996 错误
72浏览 • 1回复 待解决
通过web上传图片并进行预览
976浏览 • 1回复 待解决
HarmonyOS 图片上传文件过大如何处理
38浏览 • 1回复 待解决
js开发上传文件路径问题
6273浏览 • 2回复 待解决
NEXT网络请求如何上传文件
2085浏览 • 1回复 待解决