Я работаю над сценарием для загрузки изображения на S3 в реагировать родной, реагировать-родной-imagepicker и топор ios ...
Для начала у меня есть селектор файлов:
function onChoosePhoto() {
const options = {
noData: true,
}
ImagePicker.launchImageLibrary(options, response => {
if (!response.didCancel && !response.error) setFile(response)
})
}
затем, после того, как файл задан, я отправляю его в свой сервис:
useEffect(() => {
const isValidSize = file && file.fileSize > 6 * 1024;
const isValidType = file && allowedTypes.includes(file.type);
if (isValidSize && isValidType) {
setErrors([]);
uploadFile(file);
} else {
if (file && !isValidSize) setErrors([...errors, 'file exceeds maximum allowed size']);
if (file && !isValidType) setErrors([...errors, 'unsupported file type, please use a jpg file extension']);
}
}, [file]);
, а затем мой сервис получает заданный URL-адрес и отправляет файл ...
export async function receiptUpload(file) {
const date = new Date();
const headers = await getAWSHeaders();
const presignUrl = await request.post(
urls.fileUpload.presignUpload,
{file_name: date.getTime()},
{headers}
)
.then(res => res.data);
const fileUpload = presignUrl.presignUrl && await request.put(
presignUrl.presignUrl,
{...file, fileName: date.getTime()}
)
.then(res => res.status === 200);
// const fileId = fileUpload && await request.post(urls.fileUpload.receiptUpload, {file_name: file.name}, {headers}).then(res => res.data);
// const receiptSubmit = fileId && await request.post(urls.fileUpload.receiptSubmit, {
// file_id: fileId.file_id
// }, {headers}).then(res => res.data);
return receiptSubmit;
}
Кажется, это работает нормально, и я получаю ответ 200 от S3. Однако, когда я смотрю в корзину, он сохраняется как файл без расширения файла, а при открытии файла он просто содержит JSON, который соответствует тому, что задано response-native-imagepicker, например:
{
height: 3024
origURL: "assets-library://asset/asset.HEIC?id=CC95F08C-88C3-4012-9D6D-64A413D254B3&ext=HEIC"
fileName: null
width: 4032
type: "image/jpeg"
fileSize: 13712705
isVertical: false
uri: "file:///Users/sandra.willford/Library/Developer/...
}