1、框架已经帮你获取到文件对象File了
public boolean uploadFileToLocale(File uploadFile,String filePath) {
boolean ret_bl = false;
try {
InputStream in = new FileInputStream(uploadFile);
ret_bl=copyFile(in,filePath);
} catch (Exception e) {
e.printStackTrace();
}
return ret_bl;
}
public boolean copyFile(InputStream in,String filePath) {
boolean ret_bl = false;
FileOutputStream os=null;
try {
os = new FileOutputStream(filePath,false);
byte[] b = new byte[8 * 1024];
int length = 0;
while ((length = in.read(b)) > 0) {
os.write(b, 0, length);
}
os.close();
in.close();
ret_bl = true;
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(os!=null){
os.close();
}
if(in!=null){
in.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return ret_bl;
}
}
2、天了个撸,SB架构师根本就飘在天空没下来,根本就没想文件上传这一回事
public String uploadByHttp(HttpServletRequest request) throws Exception{
String filePath=null;
List
//创建一个通用的多部分解析器
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
//判断 request 是否有文件上传,即多部分请求
if(multipartResolver.isMultipart(request)){
//转换成多部分request
MultipartHttpServletRequest multiRequest =multipartResolver.resolveMultipart(request);
MultiValueMap
List
for(Entry
fileSet = temp.getValue();
}
String rootPath=System.getProperty("user.dir");
for(MultipartFile temp : fileSet){
filePath=rootPath+"/tem/"+temp.getOriginalFilename();
File file = new File(filePath);
if(!file.exists()){
file.mkdirs();
}
fileNames.add(temp.getOriginalFilename());
temp.transferTo(file);
}
}
}
3、神啊,我正在撸框架,请问HttpServletRequest怎么获取!!!!
(1)在web.xml中配置一个监听
org.springframework.web.context.request.RequestContextListener
(2)HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
1、本地文件下载(即文件保存在本地)
public void fileDownLoad(HttpServletRequest request,HttpServletResponse response,String fileName,String filePath) throws Exception {
response.setCharacterEncoding("UTF-8");
//设置ContentType字段值
response.setContentType("text/html;charset=utf-8");
//通知浏览器以下载的方式打开
response.addHeader("Content-type", "appllication/octet-stream");
response.addHeader("Content-Disposition", "attachment;filename="+fileName);
//通知文件流读取文件
InputStream in = request.getServletContext().getResourceAsStream(filePath);
//获取response对象的输出流
OutputStream out = response.getOutputStream();
byte[] buffer = new byte[1024];
int len;
//循环取出流中的数据
while((len = in.read(buffer)) != -1){
out.write(buffer,0,len);
}
}
2、远程文件下载(即网上资源下载,只知道文件URI)
public static void downLoadFromUrl(String urlStr,String fileName,HttpServletResponse response){
try {
urlStr=urlStr.replaceAll("\\\\", "/");
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//设置超时间为3秒
conn.setConnectTimeout(3*1000);
//防止屏蔽程序抓取而返回403错误
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
//得到输入流
InputStream inputStream = conn.getInputStream();
response.reset();
response.setContentType("application/octet-stream; charset=utf-8");
response.setHeader("Content-Disposition", "attachment; filename=" + new String(fileName.getBytes("GBK"),"ISO8859_1"));
//获取响应报文输出流对象
//获取response对象的输出流
OutputStream out = response.getOutputStream();
byte[] buffer = new byte[1024];
int len;
//循环取出流中的数据
while((len = in.read(buffer)) != -1){
out.write(buffer,0,len);
}
} catch (Exception e) {
e.printStackTrace();
}
}