2012-07-06 1 views
0

XMLHttpRequest의 이진 데이터를 처리하는 데 사용되는 여러 가지 HTML5 기능 (BlobBuilder, ArrayBuffer) 및 HTML5 이전 해킹 (charset=x-user-defined)이 있습니다.사용자가 파일을 선택하지 않고 Safari에서 이진 데이터 업로드

내가 알 수있는 한 사용자가 대화식으로 선택한 파일에없는 이진 데이터를 Safari에서 업로드 할 수있는 항목이 없으며 "multipart/form-data"으로 전송됩니다.

실제로 내가 보내려하는 데이터는 이미 파일 시스템에 있으며, URL은 file://입니다. 이것은 PhoneGap 앱입니다. 그러나 보안 위험 때문에 브라우저가이를 받아들이게 할 방법이 없으며 PhoneGap의 FileTransfer 기능은 진행률 표시 줄이 부족하기 때문에 쓸모가 없습니다.

HTML 및 JavaScript 파일이 다운로드되고 클라이언트 측에 저장되므로 호환성을 완전히 포기할 의향이 있습니다. 그리고 앱은 이미 iPhone 4가 필요하므로 최근 브라우저 버전을 요구할 수 있습니다. 바이너리로 Safari 5.1을 업로드 할 수있는 방법이 있습니까?

답변

1

아마도 Phonegap (iOS version, iPhone version) 용 파일 업 로더 플러그인이 도움이 될 수 있습니까? 진행 콜백이 있습니다.

progress 업로드 진행 상태에서 호출됩니다. 서명이 문서에서 function(bytesUploaded, totalBytes)

예해야합니다 : 그것은 번들 FileTransfer 플러그인의 조상

window.plugins.fileUploader.uploadByUri(
    'http://example.com/upload', 
    'file://path/to/file.jpg', 
    {foo: 'bar'}, 
    'myPhoto', 
    'anImage.jpg', 
    'image/jpeg', 
    function(result) { 
     console.log('Done: ' + result); 
    }, 
    function(result) { 
     console.log("Error: " + result); 
    }, 
    function(loaded, total) { 
     var percent = 100/total * loaded; 
     console.log('Uploaded ' + percent); 

    } 
); 
+0

나는 그 이전에 대한 참조를 본 것 같아요 ... 무엇입니까? 'iOS'버전이 'iPhone'버전 (https://github.com/phonegap/phonegap-plugins/tree/master/iOS/FileUploader)보다 최신 버전 인 것 같습니다. 인터페이스가 Android 버전과 호환되지 않습니다. 지금은 총알을 물고 Base64로 업로드하고 있습니다. 애플이 안드로이드보다 느리게 실행하기를 원한다면, 그것은 그들의 특권이다 : vP. – Potatoswatter

+0

맞습니다. iPhone 버전은 Cordova 대신 PhoneGap을 참조합니다. Base64 업로드가 더 느린 경우에도 제대로 작동하기를 바랍니다. –

관련 문제