我在$(function() { ... });
body
var uploader = new plupload.Uploader({
runtimes: 'html5,flash,silverlight',
browse_button: 'pickfiles',
container: 'uploader',
max_file_size: '20mb',
unique_names: true,
multiple_queues: false,
//drop_element: 'dropzone',
url: '/Home/Upload',
flash_swf_url: '../../../Scripts/upload/plupload.flash.swf',
silverlight_xap_url: '../../../Scripts/upload/plupload.silverlight.xap',
filters: [
{ title: "Image files", extensions: "jpg,gif,png" },
{ title: "Zip files", extensions: "zip" }
],
chunk_size: '2mb',
resize: { width: 320, height: 240, quality: 90 }
});
uploader.bind("Init", function (up, params) {
$("#runtime").html("<div>Current runtime: " + params.runtime + "</div>");
});
$("#uploadfiles").bind("click", function (e) {
uploader.start();
e.preventDefault();
});
uploader.init();
uploader.bind("FilesAdded", function (up, files) {
$.each(files, function (i, file) {
$('#runtime').append(
'<div id="' + file.id + '">' +
file.name + ' (' + plupload.formatSize(file.size) + ') <b></b>' +
'</div>');
});
up.refresh();
});
uploader.bind("UploaderProgress", function (up, file) {
$("#" + file.id + " b").html(file.percent + "%");
});
uploader.bind("Error", function (up, file) {
$('#runtime').append("<div>Error: " + err.code +
", Message: " + err.message +
(err.file ? ", File: " + err.file.name : "") +
"</div>");
up.refresh();
});
uploader.bind("FileUploaded", function (up, file) {
$("#" + file.id + " b").html("100%");
});
和HTML代码
<div class="container">
<div>Logo: </div>
<div style="clear"></div>
<div id="uploader">
<div id="runtime" class="right">
No runtime was found !
</div>
<div>
<a id="pickfiles" href="#">[Select files]</a>
<a id="uploadfiles" href="#">[Upload files]</a>
</div>
</div>
</div>
错误如下图所示:
http://i.imgur.com/5t0sT.jpg(查看完整尺寸)
我发现文件过滤器存在问题。我在IE8上运行PLUpload.com示例,它可以在Flash运行时运行。
在其他浏览器上,我的上传器完美运行。 此外,我已经为所有浏览器(IE8,FF9,Chrome 16)安装了最新版本的Flash,但问题仍然存在于IE8中。
问题未得到解决:
不要将上传者对象插入到具有visibility:hidden
或display:none
属性的div中。
答案 0 :(得分:5)
对于遇到与我相同问题的每个人:
我有以下HTML代码
<div class="container" style="display:none">
<div>Logo: </div>
<div style="clear"></div>
<div id="uploader">
<div id="runtime" class="right">
No runtime was found !
</div>
<div>
<a id="pickfiles" href="#">[Select files]</a>
<a id="uploadfiles" href="#">[Upload files]</a>
</div>
</div>
</div>
类container
创建为对话框
$(function()
{
$(".container").dialog({modal:true, width:400});
});
我们知道DIV由于dispaly:none
而被初始隐藏(当然,您可以将autoOpen:false
设置为对话框对象中的新选项)并删除样式。
在IE8中(可能在早期版本和更高版本中)如果div
被隐藏,则无法很好地实例化上传器。 (返回上述错误)
在Chrome和Firefox中(我不在Opera中测试此问题)工作正常。
所以,我的建议是避免隐藏块(即使你想创建模态对话框)。
我从该div中删除了display:none
样式和dialog
对象,现在在IE8中工作得非常好。
为什么?我不知道为什么在IE中,对象的实例不会在页面启动时创建,但在Firefox和Chrome中,实例是正常创建的。
答案 1 :(得分:2)
执行此操作:
uploader.refresh();
我在我的页面上测试过,工作过!
答案 2 :(得分:1)
这也解决了这个问题:
#pickfiles{
display:block;
}
或者这个:
$('#pickfiles').on("mouseover",function(){
$(".plupload.flash").css({
left:$('#pickfiles').offset().left+'px',
top:$('#pickfiles').offset().top+'px'
});
});
答案 3 :(得分:-1)
在您的系统上安装microsoft silverlight。这将解决问题,并且不要忘记给您的用户提供安装silverligth的消息。
答案 4 :(得分:-1)
此错误通过以下方式解决:
添加&#34; html4&#34;属性:&#34;运行时&#34;
var uploader = new plupload.Uploader({
runtimes : 'gears,html5,flash,silverlight,browserplus,**html4**',
browse_button : 'pickfiles_<? echo $tmpKey ?>',
container : 'container_<? echo $tmpKey ?>',
max_file_size : '30mb',
url : '/image/upload3',
flash_swf_url : '/plupload/js/plupload.flash.swf',
silverlight_xap_url : '/plupload/js/plupload.silverlight.xap',
filters : [
{title : "Image files", extensions : "jpg,gif,png,jpeg"},
{title : "Zip files", extensions : "zip"}
],
unique_names:false,
multipart_params : {
"tmpPath" : "<? echo $tmpPath ?>",
"minWidth" : "<? if(isset($minWidth)) echo $minWidth; else echo 0; ?>",
"minHeight" : "<? if(isset($minHeight)) echo $minHeight; else echo 0; ?>"
}
// resize : {width : 390, height : 290, quality : 90}
});
祝你好运!!!