前端传来的图片并保存_java实现图片上传功能,并返回图片保存路径

packagecom.siyang.CommonUtil;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.io.PrintWriter;importjavax.servlet.http.HttpServletResponse;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importcom.google.gson.Gson;public classBaseController {protected Logger logger =LoggerFactory.getLogger(getClass());/*** 输出JSON数据

*

*@paramresponse

*@paramjsonStr*/

public voidwriteJson(HttpServletResponse response, String jsonStr) {

response.setContentType("text/json;charset=utf-8");

response.setHeader("Pragma", "No-cache");

response.setHeader("Cache-Control", "no-cache");

response.setDateHeader("Expires", 0);

PrintWriter pw= null;try{

pw=response.getWriter();

pw.write(jsonStr);

pw.flush();

}catch(Exception e) {

logger.info("输出JSON数据异常", e);

}finally{if(pw!=null){

pw.close();

}

}

}/***

* 向页面响应json字符数组串流.

*

*@paramresponse

*@paramjsonStr

*@throwsIOException

*@returnvoid

*@author蒋勇

* @date 2015-1-14 下午4:18:33*/

public void writeJsonStr(HttpServletResponse response, String jsonStr) throwsIOException {

OutputStream outStream= null;try{

response.reset();

response.setCharacterEncoding("UTF-8");

outStream=response.getOutputStream();

outStream.write(jsonStr.getBytes("UTF-8"));

outStream.flush();

}catch(IOException e) {

logger.info("输出JSON数据异常(writeJsonStr)", e);

}finally{if(outStream!=null){

outStream.close();

}

}

}public void writeJsonStr(HttpServletResponse response, InputStream in) throwsIOException {if(null ==in ){return;

}

OutputStream outStream= null;try{

response.reset();

response.setCharacterEncoding("UTF-8");

response.setHeader("Pragma", "No-cache");

response.setHeader("Cache-Control", "no-cache");

response.setDateHeader("Expires", 0);

outStream=response.getOutputStream();int len = 0;byte[] byt = new byte[1024];while ((len = in.read(byt)) != -1) {

outStream.write(byt,0, len);

}

outStream.flush();

}catch(IOException e) {

logger.info("输出JSON数据异常(writeJsonStr)", e);

}finally{if(outStream!=null){

outStream.close();

in.close();

}

}

}/*** 输出JSON数据

*

*@paramresponse

*@paramjsonStr*/

public voidwriteJson(HttpServletResponse response, Object obj) {

response.setContentType("text/json;charset=utf-8");

response.setHeader("Pragma", "No-cache");

response.setHeader("Cache-Control", "no-cache");

response.setDateHeader("Expires", 0);

PrintWriter pw= null;

Gson gson= newGson();try{

pw=response.getWriter();

pw.write(gson.toJson(obj));

pw.flush();

}catch(Exception e) {

logger.info("输出JSON数据异常", e);

}finally{if(pw!=null){

pw.close();

}

}

}public voidwriteHtml(HttpServletResponse response, String html) {

response.setContentType("text/html;;charset=utf-8");

response.setHeader("Pragma", "No-cache");

response.setHeader("Cache-Control", "no-cache");

response.setDateHeader("Expires", 0);

PrintWriter pw= null;try{

pw=response.getWriter();

pw.write(html);

pw.flush();

}catch(Exception e) {

logger.info("输出HTML数据异常", e);

}finally{if(pw!=null){

pw.close();

}

}

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,前端需要将图片以FormData的形式递给后台Java。然后在Java中使用Servlet接收FormData,解析出图片文件,并将其保存到指定位置。 以下是一个简单的实现代码: ```java import java.io.File; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Paths; import java.util.UUID; import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; @WebServlet("/upload") @MultipartConfig public class ImageUploadServlet extends HttpServlet { private static final String UPLOAD_DIR = "uploads"; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取上文件的目录 String appPath = request.getServletContext().getRealPath(""); String uploadPath = appPath + File.separator + UPLOAD_DIR; // 如果目录不存在,则创建该目录 File uploadDir = new File(uploadPath); if (!uploadDir.exists()) { uploadDir.mkdir(); } // 从请求中获取上文件 Part filePart = request.getPart("file"); String fileName = UUID.randomUUID().toString() + "-" + Paths.get(filePart.getSubmittedFileName()).getFileName().toString(); // 将上文件保存到指定目录 InputStream fileContent = filePart.getInputStream(); Files.copy(fileContent, Paths.get(uploadPath + File.separator + fileName)); response.getWriter().println("文件上成功!"); } } ``` 在前端页面,需要使用HTML的form表单,将图片以FormData的形式提交给后台Java: ```html <form action="upload" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="上"> </form> ``` 以上代码中,`enctype="multipart/form-data"`表示表单数据是以二进制形式上的。在Java中,使用`@MultipartConfig`注解开启文件上功能,使用`request.getPart("file")`获取上的文件。最后,使用`Files.copy`方法将文件保存到指定目录中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值