사용자가 전화기에서 이미지를 선택하여 AWS S3에 업로드 할 수있는 코드바 앱이 있습니다. 나는 이것을 위해 cordova-plugin-camera과 S3 SDK를 사용하고 있습니다. 나는 잘 작동하는 코드를 가지고 있지만 (아래 참조), base64로 인코딩 된 문자열 (Camera.DestinationType.DATA_URL)과 다시 한번 Buffer
에 전체 이미지를 메모리로 가져와야합니다.Cordova 앱에서 서버로 스트림 파일
잠재적 인 메모리 문제를 줄이려면이 장치를 휴대 전화의 하드 드라이브에서 스트리밍하는 것이 좋습니다. cordova-plugin-camera 웹 사이트에도 경고 메시지가 표시됩니다.
/** * 경고 : DATA_URL은 사용하지 않는 것이 좋습니다. DATA_URL 대상 * 유형은 낮은 품질의 설정을 사용하는 경우에도 매우 많은 메모리를 사용합니다. 그것 *을 사용하면 메모리 부족 오류가 발생하고 응용 프로그램이 다운 될 수 있습니다. 대신 FILE_URI * 또는 NATIVE_URI를 사용하십시오. */
그래서 FILE_URI
또는 NATIVE_URI
또는 다른 기술을 사용하여 S3에 디스크에서 바로 사진을 스트리밍 할 수있는 방법은 무엇입니까? 이것은 당신이 시작해야
doTheThing() {
let options = {
quality: 50,
destinationType: Camera.DestinationType.DATA_URL,
sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
encodingType: Camera.EncodingType.JPG
};
navigator.camera.getPicture(imgData => {
this.uploadToS3(imgData);
}, options);
uploadToS3(data) {
let AWS = require('aws-sdk');
AWS.config = new AWS.Config();
AWS.config.accessKeyId = 'noway';
AWS.config.secretAccessKey = 'jose';
AWS.config.region = 'us-east-2';
let s3 = new AWS.S3();
let uploadParams = { Bucket: 'iamkule/f1/f2', Key: '', Body: new Buffer(data, 'base64') };
uploadParams.Key = 'myfile.jpg';
s3.upload(uploadParams, function (err, data) {
if (data) {
console.log('yay!');
}
});
}
}
파일 업로드 플러그인을 보셨습니까? – Gandhi
@ 간디에 대한 URL을 얻을 수 있습니까? cordova-plugin-file-transfer (https://cordova.apache.org/docs/ko/latest/reference/cordova-plugin-file-transfer)를 의미합니까? – d512
파일 전송 플러그인은 제가 언급 한 것입니다. 업로드 기능이 있습니다. – Gandhi