HarmonyOS web上传文件和图片

希望提供上传文件和图片的web开发demo。

HarmonyOS
2024-10-24 13:10:59
888浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
Heiang

上传文件的demo如下:

import web_webview from '@ohos.web.webview';  
import picker from '@ohos.file.picker';  
import { BusinessError } from '@ohos.base';  
  
@Entry  
@Component  
struct UploadFile {  
  controller:web_webview.WebviewController = new web_webview.WebviewController();  
  
  build() {  
    Column() {  
      Web({ src: $rawfile('setAttrAndEvent/uploadFile/index.html'), controller: this.controller })  
        .onShowFileSelector((event) => {  
          const documentSelectOptions = new picker.DocumentSelectOptions();  
          let uri: string | null = null;  
          const documentViewPicker = new picker.DocumentViewPicker();  
          documentViewPicker.select(documentSelectOptions)  
            .then((documentSelectResult) => {  
              uri = documentSelectResult[0];  
              if (event) {  
                event.result.handleFileList([uri]);  
              }  
            }).catch((err: BusinessError) => {  
            console.error(`Invoke documentViewPicker.select failed, code is ${err.code}, message is ${err.message}`);  
          })  
          return true  
        })  
    }  
  }  
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.

上传图片的demo如下:

import web_webview from '@ohos.web.webview';  
import picker from '@ohos.file.picker';  
import { BusinessError } from '@ohos.base';  
  
@Entry  
@Component  
struct UploadFile {  
  controller:web_webview.WebviewController = new web_webview.WebviewController();  
  @State uri: Array<string> | null = null;  
  build() {  
    Column(){  
      Text('选中的图片')  
      List(){  
        ForEach(this.uri,(item:string)=>{  
          ListItem(){  
            Row(){  
              Image(item)  
                .width('30vh')  
                .height('30vh')  
            }  
  
          }  
          .width('30vh')  
          .height('30vh')  
        })  
      }  
      .width('30vh')  
      .height('30vh')  
      Web({  
        src:$rawfile('setAttrAndEvent/uploadFile/index.html'),  
        controller:this.controller  
      })  
        .width('100%')  
        .height('100vh')  
        .backgroundColor('grey')  
        .onShowFileSelector((event)=>{  
          console.log('MyFileUploader onShowFileSelector invoked')  
          let PhotoSelectOptions = new picker.PhotoSelectOptions();  
          PhotoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;  
          PhotoSelectOptions.maxSelectNumber = 5;  
  
          const photoPicker = new picker.PhotoViewPicker();  
          photoPicker .select(PhotoSelectOptions).then((photoSelectResult) => {  
            this.uri = photoSelectResult.photoUris;  
            console.info('photoPicker .select to file succeed and photoSelectResult is:' + JSON.stringify(photoSelectResult));  
            console.info('photoPicker .select to file succeed and uri is:' + this.uri);  
            if (event) {  
              event.result.handleFileList(this.uri);  
            }  
          }).catch((err: BusinessError) => {  
            console.error(`Invoke photoPicker .select failed, code is ${err.code}, message is ${err.message}`);  
          })  
          return true;  
        })  
    }  
  }  
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.

index.html页面如下:

<!doctype html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <meta name="viewport"  
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">  
    <meta http-equiv="X-UA-Compatible" content="ie=edge">  
    <title>Document</title>  
</head>  
<body>  
<div class="upload">  
    <!--  点击上传按钮   -->  
    <form id="upload-form" enctype="multipart/form-data">  
        <input type="file" id="upload" name="upload"/>  
    </form>  
</div>  
</body>  
</html>  
<style>  
    body{  
        width:100%;  
        height:auto;  
        margin:50px auto;  
        text-align:center;  
        background-color:#2EB3FF  
    }  
</style>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
分享
微博
QQ
微信
回复
2024-10-24 15:10:46
相关问题
HarmonyOS h5 web上传图片文件的demo
843浏览 • 1回复 待解决
HarmonyOS web如何上传图片
536浏览 • 1回复 待解决
HarmonyOS web组件上传文件
967浏览 • 1回复 待解决
HarmonyOS Web 图片上传功能失效
876浏览 • 1回复 待解决
通过web上传图片并进行预览
1697浏览 • 1回复 待解决
HarmonyOS 图片上传文件过大如何处理
820浏览 • 1回复 待解决
Web组件如何实现文件上传功能?
1021浏览 • 1回复 待解决
HarmonyOS 图片上传
594浏览 • 1回复 待解决
HarmonyOS 图片上传失败
831浏览 • 1回复 待解决
HarmonyOS 无法上传图片
657浏览 • 1回复 待解决
HarmonyOS 上传图片失败
1220浏览 • 1回复 待解决
HarmonyOS 上传图片异常
721浏览 • 1回复 待解决
HarmonyOS 上传图片问题
639浏览 • 1回复 待解决
HarmonyOS使用Web组件预览PDF图片
1652浏览 • 1回复 待解决
HarmonyOS 上传文件问题
792浏览 • 1回复 待解决
HarmonyOS 录音上传文件
904浏览 • 1回复 待解决
HarmonyOS 如何上传文件
960浏览 • 1回复 待解决
HarmonyOS上传文件问题
1258浏览 • 1回复 待解决