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、在处理程序中需要处理保存文件。

 

posted @ 2012-10-24 13:41  lonlie  阅读(1490)  评论(0)    收藏  举报