文件上传失败

「已注销」 2020-12-01 10:06:36
<body>
<form action="UploadServlet2" method="post" enctype="multipart/form.data ">
学号:<input name="sno" /><br/>
姓名:<input name="sname" /><br/>
上传照片:<input type="file" name ="spicture"/>
<br/>
<input type="submit" value="上传">
</form>
</body>
这是文件上传的表格
然后就是处理数据的Servlet
package org.student.servlet;

import java.io.File;
import java.io.IOException;
import java.util.Iterator;
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.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;


@WebServlet("/UploadServlet")
public class UploadServlet2 extends HttpServlet {
private static final long serialVersionUID = 1L;


public UploadServlet2() {
super();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
//上传
try {
boolean isMultipart= ServletFileUpload.isMultipartContent(request);
if(isMultipart) {//判断form是否有MUTIPART
FileItemFactory factory =new DiskFileItemFactory();
ServletFileUpload upload =new ServletFileUpload(factory);
List<FileItem> items= upload.parseRequest(request);//form的所有请求段,保存在items集合中
Iterator<FileItem> iter=items.iterator();
while(iter.hasNext()) {
FileItem item = iter.next();
String itemname=item.getFieldName();

int sno=-1;
String sname=null;

if(item.isFormField()) {
if(itemname.equals("sno")) {
sno=Integer.parseInt(item.getString("UTF-8"));
}else if(itemname.equals("sname")) {
sname=item.getString("UTF-8");
}else {
System.out.println("其他字段");
}
}else {
//文件上传
//文件名
String filename=item.getName();
//获取文件内容并上传
//指定文件上传位置,获取服务器路径
String path=request.getSession().getServletContext().getRealPath("upload");
File file=new File(path,filename);
item.write(file);
System.out.println(filename+"上传成功");
return;
}

}
}
} catch (FileUploadException e) {
e.printStackTrace();
}//解析form中的
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}



}


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}

}


这个就是,不报错,但是我预计接收上传文件的文件夹里面就是空的。。。。。。对,就是空的,太难了,也不会调试断点。希望有大佬帮我运行康康!!在此拜谢~
...全文
5023 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2020-12-03
  • 打赏
  • 举报
回复
引用 1 楼 小傻哥的回复:
import org.apache.commons.fileupload 这是一个外部的lib。 我建议用内置的,现在可以直接使用parts来做。 需要添加@MultipartConfig,不知道是不是你没写所以文件没有存到servlet中。 我就不写代码了,看别人的文章就好了 https://blog.csdn.net/u012334071/article/details/50261063
好的,我试试看,谢谢
小傻哥 2020-12-02
  • 打赏
  • 举报
回复
import org.apache.commons.fileupload 这是一个外部的lib。 我建议用内置的,现在可以直接使用parts来做。 需要添加@MultipartConfig,不知道是不是你没写所以文件没有存到servlet中。 我就不写代码了,看别人的文章就好了 https://blog.csdn.net/u012334071/article/details/50261063

24,923

社区成员

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

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