java上传图片到本地服务器
1.新建一个简单的jsp页面
<body>
<form action="picture.do" enctype="multipart/form-data" method="post">
图片:<input type="file" multiple="multiple" name="img">
<br>
<button>提交</button>
</form>
</body>
- 注意项:
1.首先要声明上传多媒体内容form表单要加上enctype="multipart/form-data"的属性。
(enctype=“multipart/form-data”的意思是设置表单的MIME编码
默认情况,这个编码格式是application/x-www-form-urlencoded,可以通过request.getParameter来获取表单中的内容
但是文件上传需要接受的是二进制的数据需要使用multipart/form-data,才能完整的传递文件数据,进行下面的操作。使用了此设置,就不会用getParameter直接获取文本内容了,而是用一个字节数组来接收内容,然后再转换成String类型)
2.表单必须是post提交
3.input标签也要声明 multiple="multiple"属性
2.开始编写servlet的内容
package dream.servlet;
import java.io.File;
import java.io.IOException;
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;
import org.apache.tomcat.util.bcel.classfile.Constant;
@WebServlet("/picture.do")
@MultipartConfig
public class PictureServlet extends HttpServlet{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 获取上传的图片
Part part = req.getPart("img");
String imgName=part.getSubmittedFileName();
//判断不为空
if(!"".equals(imgName)) {
//获取项目部署的路径
String xmPath = this.getServletContext().getRealPath("img/" + imgName);
System.out.println(xmPath);
//写入该路径
part.write(xmPath);
//part.write(localPath);
}
}
- 注意项:
1.servlet要添加==@MultipartConfig==的注解,让它知道处理字节文件