java文件上传下载代码实例
本文实例为大家分享了java文件上传下载的具体代码,供大家参考,具体内容如下
文件上传
@RequestMapping(value="/uploadFile",method=RequestMethod.POST)
publicResultObjectuploadFiles(@RequestParam("file")MultipartFilefile,HttpServletRequestrequest){
ResultObjectrs=null;//返回上传完成信息
StringuploadDir="files";//上传目录,文件保存在webapp下的files文件中
if(!file.isEmpty()){
//可以对user做一些操作如存入数据库
//以下的代码是将文件file重新命名并存入Tomcat的webapp目录下项目的下级目录
StringfileRealName=file.getOriginalFilename();//获得原始文件名;
/*intpointIndex=fileRealName.indexOf(".");//点号的位置
StringfileSuffix=fileRealName.substring(pointIndex);//截取文件后缀
UUIDFileId=UUID.randomUUID();//生成文件的前缀包含连字符
StringsavedFileName=FileId.toString().replace("-","").concat(fileSuffix);//文件存取名
*/
StringsavedDir=request.getSession().getServletContext().getRealPath(uploadDir);//获取服务器指定文件存取路径
FilesavedFile=newFile(savedDir,fileRealName);
booleanisCreateSuccess;
try{
isCreateSuccess=savedFile.createNewFile();
if(isCreateSuccess){
file.transferTo(savedFile);//转存文件
rs=ResultObject.getSuccessResult("上传文件成功");
Longsize=file.getSize();//获取文件大小
rs.setData(uploadDir+fileRealName);
}else{
rs=ResultObject.getFailResult("请修改文件名,重新上传");
}
}catch(IOExceptione){
e.printStackTrace();
}
}else{
rs=ResultObject.getFailResult("文件不能为空");
}
returnrs;
}
文件下载
@RequestMapping(value="/filterPermission/appDownLoad",method=RequestMethod.GET)
publicvoidappDownLoad(HttpServletRequestrequest,HttpServletResponseresponse){
//url是上面文件上传的url
download(url,request,response);
}
publicStringdownload(StringfilePath,HttpServletRequestrequest,HttpServletResponseresponse){
BufferedInputStreambis=null;
BufferedOutputStreambos=null;
try{
//获取文件名
StringfileName=filePath.substring(filePath.lastIndexOf("/")+1);
response.setCharacterEncoding("utf-8");
response.setContentType("application/octet-stream");
//response.setContentType("application/force-download");
//处理下载弹出框名字的编码问题
response.setHeader("Content-Disposition","attachment;fileName="
+newString(fileName.getBytes("gb2312"),"ISO8859-1"));
//获取文件的下载路径
Stringpath=request.getSession().getServletContext().getRealPath(filePath);
//利用输入输出流对文件进行下载
InputStreaminputStream=newFileInputStream(newFile(path));
//设置文件大小
response.setHeader("Content-Length",String.valueOf(inputStream.available()));
bis=newBufferedInputStream(inputStream);//构造读取流
bos=newBufferedOutputStream(response.getOutputStream());//构造输出流
byte[]buff=newbyte[1024];
intbytesRead;
//每次读取缓存大小的流,写到输出流
while(-1!=(bytesRead=bis.read(buff,0,buff.length))){
bos.write(buff,0,bytesRead);
}
response.flushBuffer();//将所有的读取的流返回给客户端
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}finally{
try{
if(null!=bis){
bis.close();
}
if(null!=bos){
bos.close();
}
}catch(IOExceptione){
System.out.println("下载文件失败,"+"文件路径:"+filePath+e);
logger.error("文件下载失败!",e);
}
}
//返回值要注意,要不然就出现下面这句错误!
//java+getOutputStream()hasalreadybeencalledforthisresponse
returnnull;
}
以上所述是小编给大家介绍的java文件上传下载详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!