SpringMVC实现文件下载及其简单
只需要在controller层里的方法设置返回值void ,加一个response的参数即可,设置ContentType 和Content-Disposition即可
以下是自己的一段小demo
package Controller;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class downloadContorller {
@RequestMapping(value={"download"},method={RequestMethod.GET})
public void download(HttpServletResponse response,
@RequestHeader String referer) throws IOException{
System.out.println(referer);
File file = new File("D:/download.txt");
if(file.exists()){
response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition", "attachment; filename=download.txt");
FileInputStream fileInputStream = new FileInputStream(file);
byte[] by = new byte[fileInputStream.available()];
fileInputStream.read(by);
OutputStream outputStream = response.getOutputStream();
outputStream.write(by);
fileInputStream.close();
outputStream.close();
}
}
}
@RequestHeader String referer这个是要加不加都可以 加进去可以通过判断referer是不是为空或者是否你指定的参数值来防止盗链之类的事情