63 lines
1.9 KiB
Plaintext
63 lines
1.9 KiB
Plaintext
import { TitleBar } from '@devwiki/common_ui/Index';
|
|
import picker from '@ohos.file.picker';
|
|
import { BusinessError } from '@kit.BasicServicesKit';
|
|
import fs, { ReadOptions } from '@ohos.file.fs';
|
|
import buffer from '@ohos.buffer';
|
|
|
|
@Entry
|
|
@Component
|
|
struct PhotoPage {
|
|
|
|
build() {
|
|
Column() {
|
|
TitleBar({
|
|
title: "PhotoPage",
|
|
onLeftClicked: ()=> {
|
|
this.getUIContext().getRouter().back();
|
|
}}).width('100%')
|
|
Divider();
|
|
Button("Open").onClick(() =>{
|
|
|
|
}).margin(5);
|
|
|
|
}.width('100%').height('100%')
|
|
}
|
|
|
|
openPhotoSelector() {
|
|
let selectOptions = new picker.PhotoSelectOptions();
|
|
selectOptions.maxSelectNumber = 1;
|
|
let viewPicker = new picker.PhotoViewPicker()
|
|
viewPicker.select(selectOptions).then((result) => {
|
|
let uri = result.photoUris;
|
|
let file = fs.openSync(uri[0], fs.OpenMode.READ_ONLY);
|
|
// 打开文件流
|
|
let inputStream = fs.createStreamSync(uri[0], 'r+');
|
|
let outputStream = buffer.alloc(fs.statSync(uri[0]).size);
|
|
// 以流的形式读取源文件内容并写入目的文件
|
|
let bufSize = 4096;
|
|
let readSize = 0;
|
|
let buf = new ArrayBuffer(bufSize);
|
|
let readOptions: ReadOptions = {
|
|
offset: readSize,
|
|
length: bufSize
|
|
};
|
|
new String(buf);
|
|
let readLen = inputStream.readSync(buf, readOptions);
|
|
readSize += readLen;
|
|
while (readLen > 0) {
|
|
for (let index = 0; index < readSize; index++) {
|
|
outputStream[readSize] = buf.slice(index);
|
|
}
|
|
readOptions.offset = readSize;
|
|
readLen = inputStream.readSync(buf, readOptions);
|
|
readSize += readLen;
|
|
}
|
|
// 关闭文件流
|
|
inputStream.closeSync();
|
|
|
|
console.info('PhotoViewPicker.select to file succeed and uri is:' + uri);
|
|
}).catch((err: BusinessError) => {
|
|
console.error(`Invoke documentViewPicker.select failed, code is ${err.code}, message is ${err.message}`);
|
|
})
|
|
}
|
|
} |