这段代码要怎么修改图片的上传路径?

549663844 2018-11-03 10:49:26
这是通过表单提交过来的,这里的代码默认把其中上传的图片放到tomcat下的webapps下面去了,每次重新部署都会自动删除这些图片,我想把上传路径改为Tomcat文件夹之外的,不知道改哪里。
package sh.shop.web.servlet.manager;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
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 org.apache.commons.io.IOUtils;
import sh.shop.domain.Product;
import sh.shop.exception.AddProductException;
import sh.shop.service.ProductService;
import sh.shop.utils.FileUploadUtils;
import sh.shop.utils.IdUtils;
/**
* 后台
* 添加商品的servlet
*/

@WebServlet("/addProduct")
public class AddProductServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 创建product对象,用于封装提交的数据
Product p = new Product();
Map<String, String> map = new HashMap<String, String>();
// 通过IdUtil工具类生成UUID,封装成商品id
//map.put("id", IdUtils.getUUID());

DiskFileItemFactory dfif = new DiskFileItemFactory();
// 设置临时文件存储位置
dfif.setRepository(new File(this.getServletContext().getRealPath(
"/temp")));
// 设置上传文件缓存大小为10m
dfif.setSizeThreshold(1024 * 1024 * 10);
// 创建上传组件
ServletFileUpload upload = new ServletFileUpload(dfif);
// 处理上传中文乱码
upload.setHeaderEncoding("utf-8");
try {
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
if (item.isFormField()) {
String fieldName = item.getFieldName();
String value = item.getString("utf-8");
map.put(fieldName, value);
} else {
String fileName = item.getName();
fileName = FileUploadUtils.subFileName(fileName);

String randomName = FileUploadUtils
.generateRandonFileName(fileName);

String randomDir = FileUploadUtils
.generateRandomDir(randomName);
String imgurl_parent = "/productImg";

File parentDir = new File(this.getServletContext()
.getRealPath(imgurl_parent));
if (!parentDir.exists()) {
parentDir.mkdirs();
}
String imgurl = imgurl_parent + "/" + randomName;

map.put("imgurl", imgurl);

IOUtils.copy(item.getInputStream(), new FileOutputStream(
new File(parentDir, randomName)));
item.delete();
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
try {
// 通过BeanUtils工具将数据封装到javabean中
BeanUtils.populate(p, map);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}

// 创建ProductService类的对象
ProductService service = new ProductService();
try {
service.addProduct(p);
response.sendRedirect(request.getContextPath()
+ "/listProduct");
return;
} catch (AddProductException e) {
e.printStackTrace();
response.getWriter().write("添加商品失败");
return;
}
}
}
...全文
53 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
十八道胡同 2018-11-03
  • 打赏
  • 举报
回复
File parentDir = new File(this.getServletContext().getRealPath(imgurl_parent));//这里是文件目录,你修改这就好了
if (!parentDir.exists()) {
parentDir.mkdirs();
}
String imgurl = imgurl_parent + "/" + randomName;

map.put("imgurl", imgurl);

IOUtils.copy(item.getInputStream(), new FileOutputStream(
new File(parentDir, randomName)));

549663844 2018-11-03
  • 打赏
  • 举报
回复
不希望改动太大,就在此代码的基础上修改,能实现吗?

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧