前端页面部分:
1、form 表单action提交 乱码:method="POST"
2、文件上传 需要: enctype="multipart/form-data"
3、通过fform表单提交数据,处理返回参数 思路:
<form id="importBookForm" action="uploadReadBook.action" encType="multipart/form-data" method="post" target="hidden_frame">
<input id="myFile" name="myFile" type="File" /></a>
<input id="submit" class="btn" type="submit" value="导入资源">
</form>
<iframe name='hidden_frame' id="hidden_frame" style='display: none'></iframe>
$('#hidden_frame').load(function(){
var text=$(this).contents().find("body").text();
// 根据后台返回值处理结果
var j=$.parseJSON(text);
if(j.status!=0) {
alert(j.msg);
} else {
alert('导入成功');
//location.href='BookResourceList.jsp'
}
});
在返回的数据里面做页面判断,关闭当前子窗口,frame窗口
后台springmvc部分:
情景描述:
本上使用的就是springmvc的ResponseEntity来做的,问题是下载的文件总是提示【文件损坏】导致打不开,word,excel,zip文件统统打不开 ,主要就是配置文件里的顺序:加粗部分要放在MappingJackson2HttpMessageConverter的前面,修改之后问题解决! (参考下 前辈的 帖子 http://www.iteye.com/topic/1125784)
首先看下 springmvc配置文件
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
<value>text/json;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<bean
class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
java 代码:
package com.clj.test.down.util;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.springframework.context.annotation.Scope;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* <一句话功能简述>
* <功能详细描述>
*
* @author fy
* @version [2018年7月17日]
*
*
*/
@Component
@Scope("prototype")
@RequestMapping("/downloadFile")
public class DownloadAction
{
@RequestMapping("download")
public ResponseEntity<byte[]> download() throws IOException {
String path="D:\\workspace\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\springMVC\\WEB-INF\\upload\\nbsxs.xlsx";
File file=new File(path);
HttpHeaders headers = new HttpHeaders();
String fileName=new String("你好.xlsx".getBytes("UTF-8"),"iso-8859-1");//为了解决中文名称乱码问题
headers.setContentDispositionFormData("attachment", fileName);
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),
headers, HttpStatus.CREATED);
}
}
spring 配置 https://blog.csdn.net/clj198606061111/article/details/20743769