HarmonyOS鸿蒙Next中H5上传文件,跳转到文件管理后点击图库无响应
HarmonyOS鸿蒙Next中H5上传文件,跳转到文件管理后点击图库无响应 任意支持上传文件的H5页面,点击上传按钮,跳转到文件管理,点击图库,无响应,有解决方案吗?
2 回复
以下是简单demo,以html中input类型按钮为例,分别对应相册、文件管理、拍照,分段将注释删除就可以分别跑通:
1、index.ets:
import web_webview from '@ohos.web.webview'
import { common } from '@kit.AbilityKit'
import { uri, util } from '@kit.ArkTS'
import fs from '@ohos.file.fs';
import picker from '@ohos.file.picker'
import { BusinessError } from '@kit.BasicServicesKit';
class testClass {
base64Str: string
constructor(base64Str:string) {
this.base64Str=base64Str;
}
test(): string {
return "2123";
}
toString(): void {
console.log('Web Component toString');
}
}
@Entry
@Component
struct WebComponent {
controller: web_webview.WebviewController = new web_webview.WebviewController()
@State uris: Array<string> = []
@State base64Str : string = ""
@State testObj: testClass = new testClass(this.base64Str);
aboutToAppear() {
web_webview.WebviewController.setWebDebuggingAccess(true);
}
build() {
Column() {
Web({ src: $rawfile('TestonShowFileSelector.html'), controller: this.controller })
.javaScriptAccess(true)
.domStorageAccess(true)
.onShowFileSelector((event) => {
console.log('MyFileUploader onShowFileSelector invoked')
const photoSelectOptions = new picker.PhotoSelectOptions();
photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_VIDEO_TYPE;
photoSelectOptions.maxSelectNumber = 8;
const photoViewPicker = new picker.PhotoViewPicker();
photoViewPicker.select(photoSelectOptions).then((photoSelectResult: picker.PhotoSelectResult) => {
this.uris = photoSelectResult.photoUris;
let file1 = fs.openSync(this.uris[0])
let array:ArrayBuffer = new ArrayBuffer(fs.statSync(file1.fd).size)
fs.readSync(file1.fd,array)
let unit = new Uint8Array(array)
let base64 = new util.Base64Helper();
let mystr = base64.encodeToStringSync(unit);
this.base64Str = "myFunction( \"" + mystr + "\")"
this.controller.runJavaScript(this.base64Str)
console.info('photoViewPicker.select to file succeed and uris are:' + this.uris);
}).catch((err: BusinessError) => {
console.error(`Invoke photoViewPicker.select failed, code is ${err.code}, message is ${err.message}`);
})
return false
})
}
}
}
2、TestonShowFileSelector.html
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0" charset="utf-8">
<script>
function myFunction(mystr)
{
var img = new Image();
img.width = 100;
img.height = 50;
img.src = "data:image/png;base64,"+mystr;
document.body.appendChild(img);
console.log(mystr)
console.log("这部分是将arkts发送过来的str渲染到h5页面上,或者存在h5侧的变量中")
}
window.onload = function() {
var fileInput = document.getElementById('upload');
fileInput.addEventListener('change', function(e) {
var file = e.target.files[0];
var reader = new FileReader();
reader.onloadend = function() {
var img = document.getElementById('preview');
img.src = reader.result;
}
if (file) {
reader.readAsDataURL(file);
}
});
}
</script>
</head>
<body>
<form id="upload-form" enctype="multipart/form-data">
<!-- 修改type属性为camera -->
<input type="file" id="upload" name="upload" accept="image/*" capture="camera" />
<!-- 添加一个图片元素用于展示图片 -->
<img id="preview"/>
</form>
<div id="155134"></div>
</body>
</html>
更多关于HarmonyOS鸿蒙Next中H5上传文件,跳转到文件管理后点击图库无响应的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,H5上传文件时跳转到文件管理后点击图库无响应,可能是由于权限配置或路径解析问题。首先,确保应用已获取必要的文件读写权限。其次,检查H5页面中文件选择器的实现,确保其与鸿蒙系统的文件管理接口兼容。最后,查看系统日志,定位具体错误信息,进行针对性修复。