6

所以 - 我一直在使用这种文件上传方法,但似乎 Google Gears 对实现 HTML5 规范的较新浏览器的支持很差。我听说过弃用这个词在几个频道中浮动,所以我正在寻找一个可以完成以下任务并支持新浏览器的替代品。我总是可以退回到齿轮/标准文件 POST,但以下这些项目使我的过程更加简单:

  1. 用户必须能够在对话框中选择多个文件进行上传。
  2. 必须能够接收文件传输的状态更新。(进度条)
  3. 我希望能够使用PUT请求而不是POST
  4. 我希望能够使用 JavaScript 轻松地将这些事件附加到现有的 HTML 元素。IE 文件选择应该在<button>点击时触发。
  5. 我希望能够使用 JavaScript 轻松控制响应/请求参数。

我不确定新的 HTML5 浏览器是否支持桌面/请求对象齿轮使用,或者是否有一个 Flash 上传器具有我在谷歌搜索中缺少的这些功能。

使用齿轮上传代码的示例:

// select some files:
var desktop = google.gears.factory.create('beta.desktop');
desktop.openFiles(selectFilesCallback);

function selectFilesCallback(files) {
  $.each(files,function(k,file) {
    // this code actually goes through a queue, and creates some status bars
    // but it is unimportant to show here...
    sendFile(file);
  });
}

function sendFile(file) {
  google.gears.factory.create('beta.httprequest');
  request.open('PUT', upl.url);
  request.setRequestHeader('filename', file.name);
  request.upload.onprogress = function(e) {
    // gives me % status updates...  allows e.loaded/e.total
  };
  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      // completed the upload!
    }
  };
  request.send(file.blob);
  return request;
}

编辑:显然flash不能使用PUT请求,所以我把它改成了“like”而不是“must”。

4

2 回答 2

1

我以前使用过基于 Flash 的,例如http://www.webresourcesdepot.com/open-source-flash-uploader-multi-bit-shift/。它们工作正常,仅依赖闪存应该可以在大多数计算机上工作。我还没有找到单独使用 js 的可靠方法,但可以使用 js 控制 flash - 特别是如果您自己编写。

希望这可以帮助。

于 2010-02-22T01:31:48.363 回答
1

(根据提问者的建议,源自对原始问题的评论。)

Plupload 是最新的孩子之一,它使用最好的方法(HTML 5、Flash、Gears、Silverlight): http: //plupload.com/

于 2010-06-09T12:59:56.447 回答