从Safari上传二进制数据,无需用户选择文件

时间:2012-07-06 06:36:36

标签: ajax upload safari binary xmlhttprequest

有几个HTML5功能(BlobBuilder,ArrayBuffer)和HTML5之前的黑客攻击(charset=x-user-defined)用于处理XMLHttpRequest中的二进制数据。

据我所知,没有任何东西可以让Safari上传不在用户交互选择的文件中的二进制数据,并以"multipart/form-data"传输。

实际上,我尝试发送的数据已经存在于文件系统中,我有一个file:// URL。这是一个PhoneGap应用程序。但是由于安全风险,没有办法让浏览器接受这一点,而且PhoneGap的FileTransfer功能没用,因为它缺乏进度条支持。

此时,我愿意完全抛出兼容性,因为HTML和JavaScript文件将被下载并存储在客户端。该应用程序已经需要iPhone 4,所以我可以要求最近的浏览器版本。有没有办法让Safari 5.1上传二进制文件?

1 个答案:

答案 0 :(得分:1)

也许Phonegap的文件上传器插件(iOS versioniPhone 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);

    }
);