feat(app): 添加问题反馈功能- 新增问题反馈页面组件 FeedbackView

- 实现问题反馈图片上传和提交功能
- 添加相关 API 配置和数据模型- 优化图片选择和上传逻辑
这个提交包含在:
徐勤民 2024-11-09 17:13:53 +08:00
父节点 d32a99673c
当前提交 c2425f621a
共有 2 个文件被更改,包括 29 次插入0 次删除

查看文件

@ -3,6 +3,9 @@ import fs, { ListFileOptions, ReadOptions, ReadTextOptions, WriteOptions } from
import { BusinessError } from '@kit.BasicServicesKit'; import { BusinessError } from '@kit.BasicServicesKit';
import { StrHelper } from './StrHelper'; import { StrHelper } from './StrHelper';
import { hilog } from '@kit.PerformanceAnalysisKit'; import { hilog } from '@kit.PerformanceAnalysisKit';
import { image } from '@kit.ImageKit';
import { buffer } from '@kit.ArkTS';
import { LogHelper } from './LogHelper';
export class FileHelper { export class FileHelper {
private constructor() { private constructor() {
@ -308,6 +311,30 @@ export class FileHelper {
return fs.accessSync(path); return fs.accessSync(path);
} }
static BmpToBase64(photoUri: string): Promise<string> {
const imagePackerApi: image.ImagePacker = image.createImagePacker();
const packOpts: image.PackingOption = { format: 'image/jpeg', quality: 100 };
return new Promise<string>((resolve, reject) => {
let file = FileHelper.openSync(photoUri, fs.OpenMode.READ_ONLY)
const imageSource = image.createImageSource(file.fd);
LogHelper.error('file.fd:' + file.fd)
imageSource.createPixelMap().then((pixelMap) => {
imagePackerApi.packing(pixelMap, packOpts).then((data: ArrayBuffer) => {
let buf: buffer.Buffer = buffer.from(data);
LogHelper.error('data:' + data)
resolve(buf.toString('base64'))
}).catch((err: BusinessError) => {
LogHelper.error('packing failed with err: ' + JSON.stringify(err));
reject(err)
})
}).catch((err: BusinessError) => {
LogHelper.error('createPixelMap failed with err: ' + JSON.stringify(err));
reject(err)
});
})
}
/** /**
* 打开文件,支持使用URI打开文件。使用Promise异步回调。 * 打开文件,支持使用URI打开文件。使用Promise异步回调。

查看文件

@ -4,6 +4,7 @@ import { common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit'; import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit'; import { hilog } from '@kit.PerformanceAnalysisKit';
import { photoAccessHelper } from '@kit.MediaLibraryKit'; import { photoAccessHelper } from '@kit.MediaLibraryKit';
import { LogHelper } from './LogHelper';
const DOCUMENT_DEFAULT_SELECT_NUMBER: number = 9; //数量 const DOCUMENT_DEFAULT_SELECT_NUMBER: number = 9; //数量
@ -65,6 +66,7 @@ export class PickerHelper {
let photoPicker = new photoAccessHelper.PhotoViewPicker(); let photoPicker = new photoAccessHelper.PhotoViewPicker();
let photoSelectResult: photoAccessHelper.PhotoSelectResult = await photoPicker.select(options); let photoSelectResult: photoAccessHelper.PhotoSelectResult = await photoPicker.select(options);
LogHelper.error(JSON.stringify(photoSelectResult))
if (photoSelectResult && photoSelectResult.photoUris && photoSelectResult.photoUris.length > 0) { if (photoSelectResult && photoSelectResult.photoUris && photoSelectResult.photoUris.length > 0) {
return photoSelectResult.photoUris; return photoSelectResult.photoUris;
} else { } else {