로컬 파일 시스템에서 S3으로 이미지를 직접 업로드해야하는 Firefox 추가 기능을 개발 중입니다.XUL : S3에 직접 업로드하지만 파일 입력 요소를 사용하지 않음
AWS에서 볼 수있는 예제는 이미지 전송을위한 표준 파일 입력 컨트롤 (다른 AWS 특정 요청 서명 등을 사용하여 웹 페이지에서이 작업을 수행하는 방법을 설명합니다. 아주).
http://bencoe.tumblr.com/post/30685403088/browser-side-amazon-s3-uploads-using-cors
Uploading Image to Amazon s3 with HTML, javascript & jQuery with Ajax Request (No PHP)
http://aws.amazon.com/articles/1434
그러나, 나는 내가 파일 입력을 사용하지 않고 파일 을 업로드 할 수있는 방법에 관한 정보를 찾을 수 없습니다, 나는 로컬 절대 경로를 알고 (addon 자체가 S3에 업로드하기 전에 파일을 씁니다).
는 "적절한"방법을 찾으려고 노력의 몇 시간 후, 나는 다음과 같은 파일 입력을 날조 생각 :var fileInput = document.createElementNS("http://www.w3.org/1999/xhtml","input");
fileInput.setAttribute('type', 'file');
fileInput['files'] = [{
mozFullPath: file.path,
name: file.leafName,
size: file.fileSize,
type: 'image/gif' // testing only with gifs
}];
및 FD 내 FormData
객체 인 다음 fd.append("file", fileInput.files[0]);
을. 그런 다음 AJAX를 통해 s3에 게시합니다.
파일을 S3에 업로드합니다. 그러나 브라우저에서 파일을 열 때 이미지 대신 텍스트 "undefined"
이 표시됩니다.
fd.append("file", fileInput.files);
시도 -이 시간 대신에 이미지의 브라우저에 의해 반환 된 내용이 텍스트 "[object FileList]"
내가 난처한 상황에 빠진거야입니다! 파일 입력을 위조하려고하는 것과 관련이 있다는 것을 알고 있습니다. 나는 이것이 더 깨끗하고 더 정확한 도핑 방법이어야한다고 믿습니다.
누구든지이 문제를 해결할 수있는 방법을 밝힐 수 있습니까? 미리 감사드립니다. chrome
코드 (. 일명 특권 코드)에서
답변 해 주셔서 감사합니다. 나는 그것이 올바른 방법 (내 질문에 포함하는 걸 잊어 버린 것)처럼 보였지만 너무 노력했지만 잘 작동하지 않습니다. S3는 나에게 오류 "MalformedPOSTRequest"를 제공합니다. – techfoobar
그냥 : 새로운 파일() 대신 파일 입력을 사용할 때 똑같은 코드가 작동합니까? 유선 (콘솔 w/요청 로깅 및/또는 게으른 사람들을위한 네트워크 패널)에서 요청이 어떻게 다른가요? newtab, BTW ...는 실제 부가 기능 코드를 사용하는 것보다 쉽습니다. 개발자 도구 및 Scratchpad를 포함하여 무료 'chrome' 권한 페이지가 열립니다. ;) – nmaier
실제로 DOM 파일 접근 방식이 효과적입니다. 그 오류는 다른 것이 었습니다 (단지 몇 분 전에 그것을 못 박았습니다!). 파일을 디스크에 쓰고 너무 빨리 ('nsIWebBrowserPersist.saveUri'를 사용하여) 파일을 업로드하려고했습니다. 업로드하기 전에 지연을 도입하여 saveUri의 작성자가 파일을 닫도록했습니다 ('nsIWebBrowserPersist'에서 close 메소드를 찾을 수 없었기 때문에). – techfoobar