HarmonyOS 图片上传失败
/*图片选择
选取单个图片
*/
import { Logger } from '@neu/common';
import { BusinessError } from '@ohos.base';
import picker from '@ohos.file.picker';
import { textAttribute12_300_dark } from './CommonModifier';
import common from '@ohos.app.ability.common';
import httpClient from '../../api/request';
const TAG = ['UploadPhoto']
/*
//http请求config打印
{"method":"POST","readTimeout":90000,"connectTimeout":90000,"url":"./add_refund_attach","multiFormDataList":[{"name":"refundAttach","contentType":"image/jpeg","filePath":"file://media/Photo/3/IMG_1719818021_002/IMG_20240701_151201.jpg"}],"header":{"deviceType":"iPhone","deviceId":"03ca323e-77cb-45ac-9519-f80c8a1464c3","deviceModel":"iPhone4.21.2","sessionId":"34d97ff324a389f6cc5edc98481fd6b9","version":"42102","timeStamp":"1720418411794","deviceKey":"AFF1EC04FF6A61B27EF124747AAF4FD7","content-Type":"multipart/form-data"},"expectDataType":1,"extraData":{"param":"TOZLDlPGCNUai84qeL3QmD0/U8dZ5WJoElY2rwoxVCc="}}
//http请求error报错
{"code":2300026,"message":"Failed to open/read local data from file/application"}
*/
@Component
export struct UploadPhoto {
select?: (url: string) => void
@State uri: string = ''
build() {
RelativeContainer() {
Image($r("app.media.add_photo"))
.width(30)
.height(30)
.margin({ top: 13 })
.id('icon')
.alignRules({
middle: { anchor: '__container__', align: HorizontalAlign.Center },
top: { anchor: '__container__', align: VerticalAlign.Top }
})
.visibility(!this.uri ? Visibility.Visible : Visibility.None)
Text($r('app.string.order_detail_upload'))
.attributeModifier(textAttribute12_300_dark)
.id('text')
.margin({ top: 7 })
.alignRules({
middle: { anchor: '__container__', align: HorizontalAlign.Center },
top: { anchor: 'icon', align: VerticalAlign.Bottom }
})
.visibility(!this.uri ? Visibility.Visible : Visibility.None)
Image(this.uri)
.id('photo')
.alignRules({
left: { anchor: '__container__', align: HorizontalAlign.Start },
top: { anchor: '__container__', align: VerticalAlign.Top }
}).visibility(this.uri ? Visibility.Visible : Visibility.None)
Image($r('app.media.icon_orange_btn_delete'))
.width(20)
.height(20)
.id('close')
.alignRules({
middle: { anchor: '__container__', align: HorizontalAlign.End },
center: { anchor: '__container__', align: VerticalAlign.Top }
})
.visibility(this.uri ? Visibility.Visible : Visibility.None)
.onClick(() => {
this.uri = ''
this.select?.(this.uri)
})
}
.width(74)
.height(73)
.borderColor('#003D69')
.borderStyle(BorderStyle.Dotted)
.borderWidth(this.uri ? 0 : 1)
.onClick(() => {
!this.uri && this.getFileAssetsFromType();
})
.borderRadius(6)
}
// 接口采用promise异步返回形式,传入可选参数DocumentSelectOptions对象,返回选择文件的uri数组。
async getFileAssetsFromType() {
const photoSelectOptions = new picker.PhotoSelectOptions(); // 创建图片-音频类型文件-预览的图库选项实例
// 选择媒体文件类型和选择媒体文件的最大数目
photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE; // 选择媒体文件类型为Image
photoSelectOptions.maxSelectNumber = 1; // 选择媒体文件的最大数目
let context = getContext(this) as common.Context;
// TODO:知识点:创建图库选择器实例,调用photoViewPicker.select()接口拉起图库界面进行文件选择,文件选择成功后,返回photoSelectResult结果集。
const photoViewPicker = new picker.PhotoViewPicker(context);
photoViewPicker.select(photoSelectOptions)
.then((photoSelectResult: picker.PhotoSelectResult) => {
const uris = photoSelectResult.photoUris;
this.uri = uris[0] || ''
// this.select?.(this.uri)
httpClient.upload({
url: '/add_refund_attach',
multiFormDataList: [{
name: 'refundAttach',
contentType: 'image/jpeg',
filePath: this.uri,
}]
});
}).catch((err: BusinessError) => {
Logger.info(TAG)
return;
})
}
}
- 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.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.
- 105.
- 106.
- 107.
- 108.
- 109.
HarmonyOS
赞
收藏 0
回答 1
相关问题
HarmonyOS 上传图片失败
1166浏览 • 1回复 待解决
HarmonyOS使用axios进行相册图片上传操作失败
1485浏览 • 1回复 待解决
rcp上传的时候如果是相册里面图片路径怎么上传,直接上传uri会失败
1010浏览 • 1回复 待解决
HarmonyOS axios上传文件失败
841浏览 • 1回复 待解决
HarmonyOS 图片上传
574浏览 • 1回复 待解决
HarmonyOS 上传图片,转化 formData 格式上传图片,转化未成功?
704浏览 • 1回复 待解决
HarmonyOS 无法上传图片
642浏览 • 1回复 待解决
HarmonyOS 上传图片异常
707浏览 • 1回复 待解决
HarmonyOS 上传图片问题
614浏览 • 1回复 待解决
HarmonyOS web如何上传图片
524浏览 • 1回复 待解决
HarmonyOS axios如何上传图片
682浏览 • 1回复 待解决
HarmonyOS图片上传相关问题
1109浏览 • 1回复 待解决
HarmonyOS 上传失败报Error: empty error message
772浏览 • 1回复 待解决
HarmonyOS 图片上传问题咨询
699浏览 • 1回复 待解决
HarmonyOS 图片上传httpRequest格式问题
584浏览 • 1回复 待解决
HarmonyOS 图片保存失败
873浏览 • 1回复 待解决
HarmonyOS 图片压缩失败
736浏览 • 1回复 待解决
HarmonyOS如何实现图片的上传
958浏览 • 1回复 待解决
HarmonyOS axios如何上传多张图片
792浏览 • 1回复 待解决
HarmonyOS web上传文件和图片
892浏览 • 1回复 待解决
使用FilePick上传uri失败,报错201
2465浏览 • 1回复 待解决
HarmonyOS 上传app进行测试,上传失败,提示app包里边含有bebug信息
682浏览 • 1回复 待解决
HarmonyOS 上传图片到服务器
691浏览 • 1回复 待解决
HarmonyOS 如何上传本地图片
808浏览 • 1回复 待解决
HarmonyOS 怎么对图片进行压缩上传
902浏览 • 1回复 待解决
filePath需要转换为沙箱文件路径
请尝试转换path为应用的沙箱路径后再上传图片