您的位置:首页 > 编程语言 > Java开发

java使用fileupload接收上传文件

2017-12-02 17:15 309 查看
需要的包是:






java服务接收端:

方法(一)//上传图片到服务器,并且获得url
@RequestMapping("GetPortraitUrl")
public @ResponseBody
GetPortraitUrlResponse GetPortraitUrl(HttpServletRequest request) throws Exception{
String uploadPath = "f:\\temp"; // 上传文件的目录
String tempPath = "f:\\temp\\buffer\\"; //临时文件目录
File uploadFile = new File(uploadPath);
if (!uploadFile.exists()) {
uploadFile.mkdirs();
}
File tempPathFile= new File(tempPath);
if (!tempPathFile.exists()) {
tempPathFile.mkdirs();
}
System.out.println(request.getContentType());
GetPortraitUrlResponse rResponse=new GetPortraitUrlResponse();
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
factory.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb
factory.setRepository(tempPathFile);// 设置缓冲区目录
upload.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB
try {
List<FileItem> items = upload.parseRequest(request);
Iterator<FileItem> i = items.iterator();
while (i.hasNext()) {
FileItem fi = (FileItem) i.next();
String fileName = fi.getName();
if (fileName != null) {
File fullFile = new File(fi.getName());
File savedFile = new File(uploadPath, fullFile.getName());
fi.write(savedFile);
}
}
} catch (org.apache.commons.fileupload.FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// 得到所有的文件
return rResponse;
}方法(二)
//图片上传
@RequestMapping("GetPortraitUrl")
public void receiveData(HttpServletRequest request, HttpServletResponse response){

PrintWriter out = null;
response.setContentType("text/html;charset=UTF-8");

Map map = new HashMap();
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
File directory = null;
List<FileItem> items = new ArrayList();
try {
items = upload.parseRequest(request);
// 得到所有的文件
Iterator<FileItem> it = items.iterator();
while (it.hasNext()) {
FileItem fItem = (FileItem) it.next();
String fName = "";
Object fValue = null;
if (fItem.isFormField()) { // 普通文本框的值
fName = fItem.getFieldName();
// fValue = fItem.getString();
fValue = fItem.getString("UTF-8");
map.put(fName, fValue);
} else { // 获取上传文件的值
fName = fItem.getFieldName();
fValue = fItem.getInputStream();
map.put(fName, fValue);
String name = fItem.getName();
if(name != null && !("".equals(name))) {
name = name.substring(name.lastIndexOf(File.separator) + 1);

// String stamp = StringUtils.getFormattedCurrDateNumberString();

directory = new File("f://test");
directory.mkdirs();

String filePath = ("f://test")+ File.separator + name;
map.put(fName + "FilePath", filePath);

InputStream is = fItem.getInputStream();
FileOutputStream fos = new FileOutputStream(filePath);
byte[] buffer = new byte[1024];
while (is.read(buffer) > 0) {
fos.write(buffer, 0, buffer.length);
}
fos.flush();
fos.close();
map.put(fName + "FileName", name);
}
}
}
} catch (Exception e) {
System.out.println("读取http请求属性值出错!");
// e.printStackTrace();
}

// 数据处理

try {
out = response.getWriter();
out.print("{success:true, msg:'接收成功'}");
out.close();
} catch (IOException e) {
e.printStackTrace();
}

}

update.jsp文件:

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" isELIgnored="false"%>
<%
String appContext= request.getContextPath();// 获得当前应用的根路径
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort() + appContext+"/" ;
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>上传目录</title>
</head>
<body>
<form method="POST" enctype="multipart/form-data" action="GetPortraitUrl" name="uploadForm">
选择一个文件: <input type="file" name="upfile"><br/>
<br/>
<input type="submit" value="上传">
</form>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: