미리 서명 된 URL을 사용하여 ionic 애플리케이션에서 S3로 이미지를 업로드하려고합니다.
이것이 현재 상황입니다.
Ionic 애플리케이션은 AWS S3에서 미리 서명 된 업로드 URL을 얻기 위해 서버에 요청을 보냅니다.
서버 측에는 aws-sdk를 사용하여 미리 서명 된 URL을 가져온 다음 다시 클라이언트로 반환하는 노드 애플리케이션이 있습니다.
이것은 AWS에 파일을 업로드해야하는 Ionic 측 코드입니다.
var options = {
fileKey: 'file',
fileName: fileName,
mimeType: 'image/jpeg',
chunkedMode: false,
timeout: 300000,
httpMethod:'PUT',
encodeURI: false,
headers: {
'Content-Type': 'image/jpeg'
}
};
var ft = new FileTransfer();
ft.upload(cordova.file.dataDirectory + fileName, uploadLink, function () {
console.log("image uploaded");
}, function (err) {
console.log(err);
}, options);
이 코드는 iOS 기기 에서 작동 하지만 Android에 애플리케이션을 배포하고 파일을 업로드하려고하면 다음 오류와 함께 실패합니다.
FileTransferError 본문 : null 코드 : 3 예외 : "쓰기 오류 : ssl = 0x8ec63f80 : 시스템 호출 중 I / O 오류, 피어에서 연결 재설정"http_status : null 소스 : "file : ///data/user/0/com.ionicframework .xxxxxxxx / files / xxxxx.jpg "대상 :" https : //xxxxxx.s3.eu-central- ..... "
Ionic 정보 Cordova CLI : 6.4.0 Ionic CLI 버전 : 2.1.12 Ionic App Lib 버전 : 2.1.7
기기의 Android 버전은 6.0입니다.
iOS에서 작동하기 때문에 약간 혼란 스럽지만 Android에서는 작동하지 않습니다. 나는 전에 코르도바 파일 전송을 사용했으며 비슷한 상황에 처한 적이 없습니다. 그러나 Android에서 S3로 직접 파일을 업로드하는 것은 이번이 처음입니다.
어떤 도움이라도 대단히 감사하겠습니다.
문제가 정확히 무엇인지 확실하지 않지만, 문제는 확실히 최신 버전의 cordova-plugin-file-transfer 플러그인 (현재 1.6.0)에 있습니다. 이 문제는 Android 플랫폼에만 반영됩니다.
문제를 "수정"한 이전 버전의 플러그인 (1.5.1)을 설치했습니다. 내 문제를 해결하기 위해 수행 한 작업 :
1) 최신 버전의 Cordova 설치 npm install -g cordova
2) 최신 버전의 ionic 설치 npm install -g ionic
3) 안드로이드 플랫폼 업데이트 ionic platform update android
4) 플러그인 제거 ionic plugin remove cordova-plugin-file-transfer
5) 이전 버전의 플러그인 설치 ionic plugin add [email protected]
6) package.json에 변경 사항 저장 ionic state save
7) ionic run android
누군가에게 도움이 되길 바랍니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다