画像をキャプチャして aws3 にアップロードするアプリを作成しました。以前は、キャプチャした写真は Pictures フォルダーに保存され、Picture フォルダーからアップロードしていました。現在、すべての写真をアプリフォルダーに保存しています(Androidデバイスにフォルダーを作成しました)。したがって、上記のエラーが発生しています。AWS 構成変数で、contentType を「image/jpg」として言及しました。しかし、この問題は解決されません。
私のコードは、
import { RNS3 } from 'react-native-aws3';
import RNFS from 'react-native-fs';
import RNFetchBlob from 'react-native-fetch-blob';
takePic = () => {
const options = {
quality: 1.0,
maxWidth: 100,
maxHeight: 100,
base64: true,
skipProcessing: true
}
// create a path you want to write to,(folder is already there)
var pictureFolder = RNFetchBlob.fs.dirs.SDCardDir+'/School';
ImagePicker.launchCamera(options,(responce)=>{
this.state.testImage.push({ uri: responce.uri });
const file ={
uri : responce.uri,
name : responce.fileName,
method: 'POST',
path : responce.path,
type : responce.type,
notification: {
enabled: true
}
}
RNFetchBlob.fs.exists(pictureFolder).then((exists)=>{
if(exists){
RNFS.moveFile(responce.uri, `${pictureFolder}/${file.name}`)
.then(() => RNFS.scanFile(`${pictureFolder}/${file.name}`));
console.log("**************exists*******************");
}
})
this.setState(prevState => {
// get the previous state values for the arrays
let saveImages = prevState.saveImages;
// add the values to the arrays like before
saveImages.push(`${pictureFolder}/${file.name}`);
// return the new state
return {
saveImages
}
});
const base64 = RNFS.writeFile(responce.uri, responce.data);
return base64;
});
}
_upload=()=>{
if(this.state.connection_Status==="Online"){
const config ={
keyPrefix :aws_keyPrefix,
bucket : 'Testing/',
region :aws_region,
accessKey:aws_accessKey,
secretKey :aws_secretKey,
successActionStatus :201,
contentType:'image/jpg'
}
//store captured images in an array
this.state.saveImages.map((image) => {
RNS3.put(image,config)
.then((responce) => {
Alert.alert("Successfully, uploaded");
});
});
}
以前は、以下のようにファイルの詳細を直接保存していましたが、
saveImages.push(file);
私は元気に働いていました。しかし、今は他のフォルダーからアップロードする必要があるため、この問題に直面しています。
誰でもこれを解決するのを手伝ってもらえますか?