求解Java不用组件或框架解析http请求上传图片 50
一。上传页面:<formname="imgform"action="http://127.0.0.1:8080/HelloUnity/UnityImage"method=...
一。上传页面:
<form name="imgform" action="http://127.0.0.1:8080/HelloUnity/UnityImage" method="post" enctype="multipart/form-data">
<input name="file" type="file"> <!-- 选择一张png图片 -->
<input type="submit" value="上传">
</form>
二。Servlet:
protected void doPost(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
resp.setContentType("text/html; charset=UTF-8");
// 获取二进制输入流
InputStream in = request.getInputStream(); // 保存整个请求
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
/** 以下解析http协议 **/
bufferedReader.readLine(); // 空行
String recordStart = bufferedReader.readLine(); // --图片数据开始标识
String fileType = bufferedReader.readLine(); // 文件类型,Content-Type: image/png
String fileName = bufferedReader.readLine(); // 文件名
fileName = fileName.substring(fileName.lastIndexOf("=") + 1);
fileName = fileName.replace("\"", "");
bufferedReader.readLine(); // 空行
String path = this.getServletContext().getRealPath("/"); // 绝对路径,保存图片使用
// 二进制输出流
FileOutputStream fos=new FileOutputStream(new File(path + "/" + fileName + ".png"));
String line = null;
// 数据正文
while ((line = bufferedReader.readLine()) != null) {
System.out.println("line = " + line);
// 如果文件数据结束标识,包含起始标识
if (line.contains(recordStart)) break;
fos.write(line.getBytes());
}
fos.close();
}
三。当前可以在指定目录保存png图片,但是图片错误不能打开
不要用任何组件或框架,比如apache的fileUpload、struts等。
解决问题后续分,
谢谢!!!!!! 展开
<form name="imgform" action="http://127.0.0.1:8080/HelloUnity/UnityImage" method="post" enctype="multipart/form-data">
<input name="file" type="file"> <!-- 选择一张png图片 -->
<input type="submit" value="上传">
</form>
二。Servlet:
protected void doPost(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
resp.setContentType("text/html; charset=UTF-8");
// 获取二进制输入流
InputStream in = request.getInputStream(); // 保存整个请求
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
/** 以下解析http协议 **/
bufferedReader.readLine(); // 空行
String recordStart = bufferedReader.readLine(); // --图片数据开始标识
String fileType = bufferedReader.readLine(); // 文件类型,Content-Type: image/png
String fileName = bufferedReader.readLine(); // 文件名
fileName = fileName.substring(fileName.lastIndexOf("=") + 1);
fileName = fileName.replace("\"", "");
bufferedReader.readLine(); // 空行
String path = this.getServletContext().getRealPath("/"); // 绝对路径,保存图片使用
// 二进制输出流
FileOutputStream fos=new FileOutputStream(new File(path + "/" + fileName + ".png"));
String line = null;
// 数据正文
while ((line = bufferedReader.readLine()) != null) {
System.out.println("line = " + line);
// 如果文件数据结束标识,包含起始标识
if (line.contains(recordStart)) break;
fos.write(line.getBytes());
}
fos.close();
}
三。当前可以在指定目录保存png图片,但是图片错误不能打开
不要用任何组件或框架,比如apache的fileUpload、struts等。
解决问题后续分,
谢谢!!!!!! 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询