上一个问题误点了已采纳。。。
就是以前案例里讲过的一个封装了文件上传的工具类
package com.bookshop.global;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
public class FileUpLoadUitl {
private static FileUpLoadUitl fileUpLoadUitl;
private FileUpLoadUitl(){
}
public FileUpLoadUitl getInstance(){
if(fileUpLoadUitl==null){
fileUpLoadUitl=new FileUpLoadUitl();
}
return fileUpLoadUitl;
}
/**
* 修改文件名为唯一文件名,防止上传文件重名
* @param fileName 上传文件名
* @return
*/
private static String getUUIDFileName(String fileName){
int index=fileName.lastIndexOf(".");
String extension=fileName.substring(index);
String uuidFileName= UUID.randomUUID().toString().replace("-","")+extension;
return uuidFileName;
}
/**
* 文件上传工具
*/
public static Map fileUpload(HttpServletRequest request){
Map<String,String > map=new HashMap<String ,String >();
DiskFileItemFactory diskFileItemFactory=new DiskFileItemFactory();
ServletFileUpload servletFileUpload=new ServletFileUpload(diskFileItemFactory);
String url=null;
String uuidFileName=null;
try {
List<FileItem> fileItemList=servletFileUpload.parseRequest(request);
for(FileItem fileItem:fileItemList){
//普通项
if (fileItem.isFormField()){
String name=fileItem.getFieldName();
String value=fileItem.getString("UTF-8");
map.put(name,value);
}
//文件上传项
else{
String fileName=fileItem.getName();
uuidFileName=getUUIDFileName(fileName);
InputStream is=fileItem.getInputStream();
String path=request.getServletContext().getRealPath("img");
url=path+"\\"+uuidFileName;
OutputStream os=new FileOutputStream(url);
int length=0;
byte[] b=new byte[1024];
while((length=is.read(b))!=-1){
os.write(b,0,length);
}
is.close();
os.close();
map.put("coverPath",request.getContextPath()+"/img/"+uuidFileName);
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return map;
}
}2
收起
正在回答 回答被采纳积分+1
2回答
3. Java 数据库开发与实战应用
- 参与学习 人
- 提交作业 357 份
- 解答问题 8016 个
本阶段将带你学习MySQL数据库,JDBC接口,MyBatis框架等,带你掌握的数据的存放和管理。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星