HarmonyOS 鸿蒙Next H5中的input标签怎么调起系统文件、照片选择

发布于 1周前 作者 phonegap100 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next H5中的input标签怎么调起系统文件、照片选择

<input type=“file” accept=“image/*” style=“position: absolute; visibility: hidden; z-index: -999; width: 0px; height: 0px; top: 0px; left: 0px;”> 
H5页面无法调起相册、拍照、选择文件弹窗交互,是还不支持input标签吗?

2 回复

input上传文件可参考以下文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/web-file-upload-V5

拍照实现可参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/camera-shooting-case-V5

input上传图片需要添加onShowFileSelector 接口,拉起图库。可参考以下demo:

import web_webview from ‘[@ohos](/user/ohos).web.webview’

import picker from ‘@ohos.file.picker’

import { BusinessError } from ‘@ohos.base’

@Entry

@Component

struct Index {

controller: web_webview.WebviewController = new web_webview.WebviewController()

build() {

Column() {

  Web({ src: $rawfile(‘i.html’), controller: <span class="hljs-keyword"><span class="hljs-keyword">this</span></span>.controller })

    .onShowFileSelector((event) =&gt; {

      console.log(‘MyFileUploader onShowFileSelector invoked’)

      <span class="hljs-keyword"><span class="hljs-keyword">const</span></span> photoSelectOptions = <span class="hljs-keyword"><span class="hljs-keyword">new</span></span> picker.PhotoSelectOptions();

      photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE; <span class="hljs-comment"><span class="hljs-comment">// 过滤选择媒体文件类型为IMAGE</span></span>

      photoSelectOptions.maxSelectNumber = <span class="hljs-number"><span class="hljs-number">5</span></span>; <span class="hljs-comment"><span class="hljs-comment">// 选择媒体文件的最大数目</span></span>

      <span class="hljs-keyword"><span class="hljs-keyword">let</span></span> uris: <span class="hljs-built_in"><span class="hljs-built_in">Array</span></span>&lt;string&gt; = [];

      <span class="hljs-keyword"><span class="hljs-keyword">const</span></span> photoViewPicker = <span class="hljs-keyword"><span class="hljs-keyword">new</span></span> picker.PhotoViewPicker();

      photoViewPicker.select(photoSelectOptions).then((photoSelectResult: picker.PhotoSelectResult) =&gt; {

        uris = photoSelectResult.photoUris;

        console.info(‘photoViewPicker.select to file succeed and uris are:’ + uris);

      }).catch((err: BusinessError) =&gt; {

        console.error(Invoke photoViewPicker.select failed, code is ${err.code}, message is ${err.message});

      })

      <span class="hljs-keyword"><span class="hljs-keyword">return</span></span> <span class="hljs-literal"><span class="hljs-literal">false</span></span>

    })

}

}

}<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

在HarmonyOS鸿蒙Next的H5环境中,若要通过input标签调起系统文件或照片选择功能,通常需结合HarmonyOS的文件选择器API来实现。由于H5页面本身的input标签在鸿蒙系统中可能不支持直接调起相册或文件选择弹窗,开发者需要借助鸿蒙系统的文件选择器(如PhotoViewPicker)来完成这一功能。

具体实现步骤如下:

  1. 在H5页面中,设置一个隐藏的input标签,用于触发文件选择。

  2. 使用鸿蒙系统的Picker模块和文件管理模块,创建文件选择器实例,并设置选择选项。

  3. 监听input标签的触发事件,调用文件选择器的select方法拉起图库界面。

  4. 用户选择文件后,处理返回的URI,进行文件读取或进一步操作。

示例代码如下(简化版):

// 省略了导入模块和详细样式设置
<input type="file" style="display:none;" id="fileInput">
<script>
document.getElementById('fileInput').addEventListener('change', function(event) {
    // 调用鸿蒙文件选择器API(需结合鸿蒙开发框架实现)
    // 例如:photoViewPicker.select(photoSelectOptions)...
});
</script>

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部