uploadify3.1 文件上传控件使用(IO Error 、HTTP Error)
哈哈,好久没写文章了。
最近弄文件上传,以前用过uploadify,感觉很不错。现在下一个新的版本来弄下,一弄却又是IO Error又是HTTP Error郁闷啊。搞了一天总算是弄好了。记录一下,如果有朋友也出现这样的问题可以参考下,嘿嘿。
首先在官网http://www.uploadify.com/下了一个最新3.1版本。
页面内容就下面这些
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
<title>文件上传</title>
<link type="text/css" rel="Stylesheet" href="uploadify/uploadify.css" />
<script type="text/javascript" src="uploadify/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="uploadify/jquery.uploadify-3.1.min.js"></script>
</head>
<body>
<p>
<input type="file" name="file_upload" id="file_upload" /></p>
<p>
<a href="javascript:$('#file_upload').uploadify('upload')">上传</a></p>
</body>
</html>
<script type="text/javascript">
$(function () {
$("#file_upload").uploadify({
'auto': true,
'swf': 'uploadify/uploadify.swf',
'buttonText': '选择文件'
});
});
</script>
一看界面效果不错哈,但是选择一图片上传,汗。。。。IO Error。

啥原因呢。。,托腮揣测下。OK ,因为没有指定uploader。好,加上uploader试一下。
<script type="text/javascript">
$(function () {
$("#file_upload").uploadify({
'auto': true,
'swf': 'uploadify/uploadify.swf',
'uploader': 'uploadify/FileHandler.ashx',
'buttonText': '选择文件'
});
});
</script>
加上再一测试,好了IO Error没了HTTP Error又来了。
这个HTTP Error真是搞的我“抓耳挠腮”,百思不得其解啊。网上找找还是不得解决,难道“此题无解”?
问题总是可以解决的。后来整来整去,另外新建了一个项目,奇迹出现了这个项目竟然可以。
好,这就好办了,那就找两个项目的不同吧。找不同啊、找不同。
一开始猜测可能是文件夹安全设置的问题,不过两个项目中的文件夹设置是一样的,这个排除。
还有见网上说一定要放在处理程序ashx放到项目的根目录下,不过我新建的项目没这样放也是可以正常上传,这个也不对。
然后就想到了文件路径包含中文的问题,用记事本打开<%@ WebHandler Language="C#" CodeBehind="FileHandler.ashx.cs" class="项目.FileManage.FileHandler" %>,直接改成<%@ WebHandler Language="C#" CodeBehind="FileHandler.ashx.cs" class="FileManage.FileHandler" %>,然后在测试看看,嘿真可以了。现在我宣布此为正解。不过严格来说中文路径也是可以的,应该修改控件的js文件可以解决这个问题。暂时没时间研究。。。。
还有个问题就是发现只能上传几KB的文件,如果太大的文件还是会出现IO Error。
后来直接我歪打正着的在ashx中写了一些代码
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Charset = "utf-8";
context.Request.Files[0].SaveAs(@"d:\se.jpg");//注释这一句就会出现IO Error
context.Response.Write("HW");
}
public bool IsReusable
{
get
{
return false;
}
}
这个还真搞不懂,怎么会小文件成功,大文件就出错呢,不知道控件咋判断的。
但问题还是解决了
所要注意的就是两点
1、uploader一定得设置,同时uploader对应的文件尽量避免使用中文路径。
2、在处理程序中需要处理保存文件。

浙公网安备 33010602011771号