问题是这样的,教师用户下载学生作业文档(项目内的相对路径)时;当文档中存在中文时,无法解析中文,显示utf8编码(即1个汉字对应的3个utf8编码)。使用了filter进行字符过滤,下载路径可以用alert正确显示出来,教师用户的下载功能javascript代码如下:
workDown : function(stid) {
var formdiv = "<form id='filedownform' style='display: none;' action='"+base.getBasePath()+"/file.ctl?pmn=fileDown' method='post' >" + "<input type='hidden' name='upHide' value='"+$("#"+stid+"").attr("fp")+"'>" +
"<input type='hidden' name='fname' value='"+$("#"+stid+"").attr("stname")+"'>" +

"</form>";
alert("<input type='hidden' name='upHide' 
结果就是:一个“测试名”的文件,在浏览器下载后,文件名变成了“
%E6%B5%8B%E8%AF%95%E5%90%8D”,我查了下,就是 测试名相应的utf-8编码,每个汉字对应3个utf8编码。
但是学生用户对同一作业文件(含有中文名),却可以下载成功,javascript代码如下:
workDown : function() {
var formdiv = "<form id='filedownform' style='display: none;' action='"+base.getBasePath()+"/file.d?pmn=fileDown' method='post' enctype='multipart/form-data' >" +
"<input type='hidden' name='upHide' value='"+$("#upHide").val()+"'>" +
"<input type='hidden' name='fname' value='"+$("#workDown").attr("fname")+"'>" +
"</form>";
$("body").append(formdiv);
$("#filedownform").submit();
$("#filedownform").remove();相应的配置文件XML文档为:
<!--  功能介绍:文件上传
  --> 
  <bean id="file" class="com.jhultraxn.util.FileCtl" parent="baseCtl" /> 
- <bean name="/file.d" class="org.springframework.web.servlet.mvc.multiaction.MultiActionController">
- <property name="methodNameResolver">
  <ref bean="pmn" /> 
  </property>
- <property name="delegate">
  <ref bean="file" /> 
  </property>
  </bean>
- <bean name="/file.ctl" class="org.springframework.web.servlet.mvc.multiaction.MultiActionController">
- <property name="methodNameResolver">
  <ref bean="pmn" /> 
  </property>
- <property name="delegate">
  <ref bean="file" /> 
  </property>
  </bean>