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

你可能感兴趣的:(.net,Flash,扩展,Path,authorization,globalization)