也许我的回答有点晚了,但我今天搜索了一个类似的解决方案并想出了以下方法。它只适用于 HTML5 Runtime。
由于无法从 plupload 中获取文件对象,因此我更改了动态创建的输入字段的 onchange 事件并为自己存储文件对象。这是通过绑定到 PostInit-Event 来完成的。
之后,我可以使用 HTML 5 引入的 FileReader API 向用户显示图像。因此无需将图像发送到服务器。请参阅下面的 FilesAdded 侦听器。
// Currently added File Objects
var nativeFiles = {};
var uploader = new plupload.Uploader({
runtimes : 'html5,html4',
// Your settings...
});
uploader.bind('PostInit', function(up, params) {
// Initialize Preview.
if(uploader.runtime == "html5") {
var inputFile = document.getElementById(uploader.id + '_html5');
var oldFunction = inputFile.onchange;
inputFile.onchange = function() {
nativeFiles = this.files;
oldFunction.call(inputFile);
}
}
});
uploader.bind('FilesAdded', function(up, files) {
for (var i in files) {
// Your code...
// Load Preview
if(uploader.runtime == "html5") {
var fileObject = uploader.getFile(files[i].id);
var reader = new FileReader();
reader.onload = (function(file, id) {
return function(e) {
var span = document.getElementById('thumb_'+id);
span.innerHTML = "<img src='"+e.target.result+"'/>";
};
})(nativeFiles[i], files[i].id);
reader.readAsDataURL(nativeFiles[i]);
}
}
});