老师帮我看看
来源:3-4 文件上传代码的实现
Wonwayshon
2020-10-25 10:41:57
出现乱码问题,并且文件也没有在upload文件夹出现,我上传的文件是 “新建文本文档.txt”,内容是 “这里是测试的文件”,在webcontent目录下新建了upload文件夹但是没有接收到
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>文件上传</title>
</head>
<body>
<h1>文件上传</h1>
<form action="${pageContext.request.contextPath}/UploadServlet" method="post" enctype="multipart/form-data">
<input type="text" name="text"/></br>
<input type="file" name="file"/></br>
<input type="submit" value="上传"/>
</form>
</hr>
</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 dfif=new DiskFileItemFactory();
ServletFileUpload sfu=new ServletFileUpload(dfif);
try {
List<FileItem> fileList=sfu.parseRequest(request);
for(FileItem fi:fileList) {
if(fi.isFormField()) {
String name=fi.getFieldName();
String value=fi.getString("utf-8");
System.out.println(name+":"+value);
}else {
String fileName=fi.getName();
System.out.println(fileName);
InputStream is=fi.getInputStream();
String path=getServletContext().getRealPath("/upload");
OutputStream os=new FileOutputStream(path+"/"+fileName);
int len=0;
byte[] b=new byte[1024];
while((len=is.read(b))!=-1) {
os.write(b,0,len);
}
is.close();
os.close();
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
2回答
同学你好,请同学查看是否是在接收传递参数信息时出现乱码,如果是,则同学可以在doPost()中添加如下代码:
request.setCharacterEncoding("UTF-8"); //是对请求的设置字符集编码。 response.setCharacterEncoding("UTF-8"); //是设置响应的字符集编码。对请求和响应都设置字符集编码后可以避免产生乱码。
好帮手慕小尤
2020-10-25
同学你好,1. 测试代码并未发现乱码情况,建议同学查看文件字符集,建议修改字符集为utf-8。
2. 项目是搭建到Tomcat中的,所以上传完成后的文件,建议同学Tomcat中进行查找。
相似问题