1

我们想中断 plupload 上传程序,取而代之的是从所选文件中获取文件控制对象或 base64 字符串,以便我们可以将它们上传到 Parse.com。(我们实际上只是使用 pluploader 进行检查和 UI 灵活性。)

我们尝试在 preInit 事件中访问 pluploader 的“UploadFile: function(up, file)”中的文件对象 - 但尽管 file.id 和 file.name 存在,但 file 似乎不是文件控制对象,因为它抛出了一个对象Parse.com 出现“类型”错误。

另一个stackoverflow [question](Can Uploadify or Plupload Upload selected files with the rest of the form data?)表明这是可能的,因为 plupload核心是客户端 javascript - 但目前尚不清楚如何。

想法?

4

1 回答 1

1

在当前版本的 Plupload ( 1.5.7 ) 中,每个运行时 (html5, html4, flash, ...) 都有自己的逻辑来访问文件数据或将其上传委托给第三方。高级上传者不知道数据。

简单考虑HTML5 上传器,您可以看到,当文件添加到文件输入时:

  • 为这个文件生成一个 guid id
  • 二进制文件对象被添加到私有对象,映射到 guid id

也许你可以 :

  • 订阅 fileInput onchange 事件以获取二进制文件对象并将它们存储在您自己的数组中。

就像是 :

uploader.init();
var fileArray = []
var inputFile = document.getElementById(uploader.id + '_html5');
inputFile.onchange = function oninputFileChanged() {fileArray.push(this.files);};
  • 订阅 FilesAdded 事件,并通过将返回的文件名和文件大小与您存储在自己的数组中的文件名和文件大小进行匹配来检索分配给二进制文件对象的 guid
  • 取消绑定默认 UploadFile 处理程序

    uploader.unbind('UploadFile');

  • 使用您的 fileArray 实现您自己的 UploadFile 处理程序,基于 HTML5 处理程序实现(约 300 行...)

请注意,这仅涵盖 HTML5 运行时。恕我直言,似乎需要做很多工作。

附带说明一下,在 GitHub 上 plupload 的主分支中, File 类具有 getSource() 和 getNative() 函数。我想它可以作为plupload 下载页面上的 plupload 2 beta 链接获得。我会说值得一试。

希望这会有所帮助

于 2013-09-02T12:32:46.423 回答