2012-07-06 12 views
0

用於處理XMLHttpRequest中的二進制數據的幾個HTML5功能(BlobBuilder,ArrayBuffer)和pre-HTML5 hacker(charset=x-user-defined)。從Safari上傳二進制數據,無需用戶選擇文件

據我所知,沒有任何東西可以讓Safari上傳不在用戶交互式選擇的文件中的二進制數據,並以"multipart/form-data"的形式發送。

實際上,我試圖發送的數據已經在文件系統中,並且我有一個file:// URL。這是一個PhoneGap應用程序。但由於存在安全風險,無法讓瀏覽器接受該功能,而且PhoneGap的FileTransfer功能無用,因爲它缺少進度條支持。

在這一點上,我願意完全拋出兼容性,因爲HTML和JavaScript文件將被下載並存儲在客戶端。該應用程序已經需要iPhone 4,所以我可以要求最近的瀏覽器版本。有沒有辦法讓Safari 5.1以二進制方式上傳?

回答

1

也許文件上傳插件for Phonegap(iOS version,iPhone version)可以提供幫助嗎?它有一個進度回調。

progress調用上傳進度。簽名應該是function(bytesUploaded, totalBytes)

來自實例文檔:

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中上傳。如果蘋果希望他們的應用運行速度低於Android,則這是他們的特權:vP。 – Potatoswatter 2012-07-08 16:00:24

+0

你說得對,iPhone版引用了PhoneGap而不是Cordova。希望Base64上傳也可以,即使速度較慢。 – 2012-07-08 18:51:58