要在Parse.com中使用plupload,如何访问文件控制对象或base64字符串

To use plupload with Parse.com, how do you get access to the file control object or base64 string?

本文关键字:访问 文件控制 对象 字符串 base64 何访问 com Parse plupload 要在      更新时间:2023-09-26

我们想中断pluploader,而是从所选文件中获取文件控制对象或base64字符串,这样我们就可以将它们上传到Parse.com

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

另一个stackoverflow[问题](Uploadify或Plupload是否可以在上传表单数据的同时上传选定的文件?)表明这是可能的,因为Plupload在其核心是客户端javascript,但尚不清楚如何上传。

想法?

在当前版本的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运行时。IMHO似乎有很多工作要做。

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

希望这将有助于