老师我这个没反应啊,你帮我看看
来源:3-4 文件上传代码的实现
weixin_慕设计3058955
2020-01-07 14:36:45
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>文件上传</h1>
<form action="${pageContext.request.contextPath}/UploadServlet" method="post" enctype="multipart/form-data">
<input type="text" name="name"><br/>
<input type="file" name="upload"><br/>
<input type="submit" value="上传">
</form>
</body>
</html>
package com.imooc.servlet;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
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.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
@WebServlet("/UploadServlet")
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
DiskFileItemFactory dis=new DiskFileItemFactory();
System.out.println("程序成功运行");
ServletFileUpload fileupload=new ServletFileUpload(dis);
try {
List<FileItem> list=fileupload.parseRequest(request);
for(FileItem fileItem:list){
if(fileItem.isFormField()){
String name=fileItem.getFieldName();
String value=fileItem.getString("UTF-8");
System.out.println(name+" "+value);
}else {
String fileName=fileItem.getName();
InputStream is=fileItem.getInputStream();
String path=getServletContext().getRealPath("/upload");
System.out.println(path);
OutputStream os=new FileOutputStream(path+"\\"+fileName);
int len=0;
byte[] b=new byte[1024];
while((len=is.read())!=-1){
os.write(b, 0, len);
}
is.close();
os.close();
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
2回答
好帮手慕酷酷
2020-01-07
同学你好,因为这里是以post方式进行过提交的表单,而我们的代码编写的doGet()方法中,所以我们要在doPost()方法中,将请求发送给doGet()方法中。
具体如下:
修改如下:
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
好帮手慕酷酷
2020-01-07
同学你好,这里同学没有反应,应该是在while循环中,应该每次读取1024个字节,进行写入,也就是应该传入字节数组 b,而同学没有传入。
具体如下:
然后在重新运行项目,访问jsp页面,进行上传文件。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题