我正在尝试使用react-native中的axios将多部分文件上传到后端服务器。我正在使用数组设置图像,但是我不知道如何将对象Object转换为Object File。后端服务器需要文件类型。我该怎么办??
期望日志:[目标文件]
结果日志:[object Object]
我的前置密码在这里
//...//
interface ImageFile {
uri: string;
name: string;
type: string;
}
const [images, setImages] = useState([] as ImageFile[]);
//. using image picker.//
ImagePicker.showImagePicker(options, async (response) => {
if (response.didCancel) {
return;
}
else if (response.error) {
Alert.alert('에러: ' + response.error);
}
else {
//이미지가 무사히 선택된것
//기존에 있던 이미지에 더해서 배열을 더해나감
// console.log(response.data);
setImages([...images, { uri: response.uri, name: response.fileName, type: response.type }]);
}
console.log(images);
//post code//
async function toPost() {
let post: Post;
try {
post = await Post.create({ content: comment } as Post);
} catch (e) {
console.log(e);
console.log('포스트 생성 불가')
return;
}
try {
let a = 0
for (let image of images) {
console.log('image[0]: ' + JSON.stringify(image))
console.log('image[1]: ' + image.type)
console.log('test: ' + test)
await post.createMedia(test, 'IMAGE');
a++;
}
} catch (e) {
console.log(e.response.data);
console.log('이미지 생성 불가')
return;
}
try {
post.status = 'PUBLIC';
await post.save();
} catch (e) {
console.log(e);
console.log('포스트 저장 불가');
return;
}
console.log(`저장된 글: ${post.content}, 이미지 개수: ${post.medias.length}`)
}
和我的api代码
public async createMedia(file, type: PostMediaType) {
const formData = new FormData();
formData.append('file', { uri: file.uri, name: file.name, type: file.type } as File);
const postMedia = new PostMedia((
await getAxios().post(`/posts/${this.id}/${type}s`, formData, { headers: { 'Content-Type': 'multipart/form-data' } })).data);
if (!this.medias) this.medias = await this.getMedias();
else this.medias.push(postMedia);
return postMedia;
}