因编码问题导致的flash上传中文文件名有的上传不成功 .

因编码问题导致的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文件,加入如上代码即可。

原文地址:https://www.cnblogs.com/superfeeling/p/2393518.html