使用七牛JS的SDK,上传时通过URL参数获取文件对象,调用plupload上传控件的addFile(file, [fileName])方法,file无法添加到上传队列,resolveFile中if的6种类型都不匹配
//获取文件对象
plus.io.resolveLocalFileSystemURL(path1, function(entry) {
// 可通过entry对象操作test.html文件
console.log("entry.isFile:" + entry.isFile);
entry.file(function(file) {
uploader2.addFile(file, 'file');
}, function(error) {
console.log("FileErrorCallback: " + error.message);
});
}, function(e) {
console.log("Resolve file URL failed: " + e.message);
});
//plupload.dev.js部分代码
/**
* Adds file to the queue programmatically. Can be native file, instance of Plupload.File,
* instance of mOxie.File, input[type="file"] element, or array of these. Fires FilesAdded,
* if any files were added to the queue. Otherwise nothing happens.
*
* @method addFile
* @since 2.0
* @param {plupload.File|mOxie.File|File|Node|Array} file File or files to add to the queue.
* @param {String} [fileName] If specified, will be used as a name for the file
*/
addFile : function(file, fileName) {
console.log('addFile');
var self = this
, queue = []
, filesAdded = []
, ruid
;
function filterFile(file, cb) {
console.log('filterFile');
var queue = [];
o.each(self.settings.filters, function(rule, name) {
if (fileFilters[name]) {
queue.push(function(cb) {
fileFilters[name].call(self, rule, file, function(res) {
cb(!res);
});
});
}
});
o.inSeries(queue, cb);
}
/**
* @method resolveFile
* @private
* @param {o.File|o.Blob|plupload.File|File|Blob|input[type="file"]} file
*/
function resolveFile(file) {
console.log('resolveFile');
var type = o.typeOf(file);
// o.File
if (file instanceof o.File) {
console.log('1');
if (!file.ruid && !file.isDetached()) {
if (!ruid) { // weird case
return false;
}
file.ruid = ruid;
file.connectRuntime(ruid);
}
resolveFile(new plupload.File(file));
}
// o.Blob
else if (file instanceof o.Blob) {
console.log('2');
resolveFile(file.getSource());
file.destroy();
}
// plupload.File - final step for other branches
else if (file instanceof plupload.File) {
console.log('3');
if (fileName) {
file.name = fileName;
}
queue.push(function(cb) {
// run through the internal and user-defined filters, if any
filterFile(file, function(err) {
if (!err) {
// make files available for the filters by updating the main queue directly
files.push(file);
// collect the files that will be passed to FilesAdded event
filesAdded.push(file);
self.trigger("FileFiltered", file);
}
delay(cb, 1); // do not build up recursions or eventually we might hit the limits
});
});
}
// native File or blob
else if (o.inArray(type, ['file', 'blob']) !== -1) {
console.log('4');
resolveFile(new o.File(null, file));
}
// input[type="file"]
else if (type === 'node' && o.typeOf(file.files) === 'filelist') {
console.log('5');
// if we are dealing with input[type="file"]
o.each(file.files, resolveFile);
}
// mixed array of any supported types (see above)
else if (type === 'array') {
console.log('6');
fileName = null; // should never happen, but unset anyway to avoid funny situations
o.each(file, resolveFile);
}
console.log('7');
}
ruid = getRUID();
console.log('ruid:'+ruid);
resolveFile(file);
console.log('queue.length:'+queue.length);
if (queue.length) {
o.inSeries(queue, function() {
// if any files left after filtration, trigger FilesAdded
if (filesAdded.length) {
self.trigger("FilesAdded", filesAdded);
}
});
}
},
//控制台输出:
Instantiating FileInput... at js/plupload/moxie.js:1176
Trying runtime: html5 at js/plupload/moxie.js:1176
[object Object] at js/plupload/moxie.js:1176
default mode: browser at js/plupload/moxie.js:1176
selected mode: browser at js/plupload/moxie.js:1176
Runtime 'html5' initialized at js/plupload/moxie.js:1176
Instantiating FileInput... at js/plupload/moxie.js:1176
Trying runtime: html5 at js/plupload/moxie.js:1176
[object Object] at js/plupload/moxie.js:1176
default mode: browser at js/plupload/moxie.js:1176
selected mode: browser at js/plupload/moxie.js:1176
Runtime 'html5' initialized at js/plupload/moxie.js:1176
entry.isFile:true at index2.html:191
addFile at js/plupload/plupload.dev.js:1930
ruid:false at js/plupload/plupload.dev.js:2022
resolveFile at js/plupload/plupload.dev.js:1958
7 at js/plupload/plupload.dev.js:2018
queue.length:0 at js/plupload/plupload.dev.js:2024
//addFile(file, [fileName])
向上传队列中添加文件,如果成功添加了文件,会触发FilesAdded事件。参数file为要添加的文件,可以是一个原生的文件,或者一个plupload文件对象,或者一个input[type="file"]元素,还可以是一个包括前面那几种东西的数组;fileName为给该文件指定的名称
bughunter (作者)
没有,最后是用plus的上传方法
2017-03-14 16:27
暮鼓晨钟
回复 bughunter:现在我就是用plus的上传方法 然后在addfile的这个地方还是没有filename呀
2017-03-15 09:38
暮鼓晨钟
方便加下QQ么 我们讨论一下 598015571
2017-03-15 09:39
1***@163.com
回复 暮鼓晨钟:你解决了吗,我也遇到了这种问题
2018-05-15 13:29
Ling是铃铛的铃
回复 bughunter: 我也遇到同样的问题,请问有解决方法吗?
2020-01-07 17:37