因编码问题导致的flash上传中文文件名有的上传不成功
多文件批量上传客户端采用的flash上传,英文文件名上传正常,但有的中文文件上传服务器端接收到的文件名乱码,且得不到扩展名,故无法保存。
例如文件:长安马自达节油之夏.gif 上传后得到的文件名是 闀垮畨椹 嚜杈捐妭娌逛箣澶?gif
所以根本得不到扩展名,用脚后根一想就是编码的问题导致的,查web.config找到:
<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" uiCulture="zh-CHS"/>
故判断flash上传是的编码是utf8格式,但request时却是gb2312导致的
查得如下资料:http://msdn.microsoft.com/zh-cn/library/b6x6shw7(VS.80).aspx
location 元素
指定应用子配置设置的资源,并锁定配置设置,以防止它们被子配置文件重写。
此元素是 .NET Framework 2.0 版中的新元素
<location allowOverride="True|False" path="path" />
allowOverride
可选的 Boolean 属性。
指定配置设置是否可以被子目录中的 Web.config 文件的配置设置重写。
默认值为 True.
path
可选的 String 属性。
指定应用包含的配置设置的资源。使用缺少 path 属性的 location 将配置设置应用于当前目录及其所有子目录。如果使用不带 path 属性的 location,并且 allowOverride 为 False,则配置设置不能被子目录中的 Web.config 文件更改。
location 元素可以放置在其他元素的外侧,以便将配置设置应用于特定资源或者锁定配置设置
父元素:configuration
指定公共语言运行库和 .NET Framework 应用程序所使用的每个配置文件中均需要的根元素。
下面的代码示例演示如何允许匿名用户获得 Logon.aspx 页的访问权
<configuration> <location path="Logon.aspx"> <system.web> <authorization> <allow users="?"/> </authorization> </system.web> </location></configuration>
下面的代码示例演示如何仅将指定页的上载文件大小限制设置为 128 KB
<configuration>
<location path="UploadPage.aspx">
<httpRuntime maxRequestLength="128"/>
</location>
</configuration>
###############################################################################
根据以上资料,对web.config进行如下更改:
在</configuration>上一行加入如下代码
<location path="文件夹名称/文件名称.ashx">
<system.web>
<globalization requestEncoding="utf-8"/>
</system.web>
</location>
测试,问题解决,OK
如果相关文件在子文件夹中,也可以在子文件夹中添加一个新的web.config文件,加入如上代码即可。