老师帮我看看

来源:3-4 文件上传代码的实现

Wonwayshon

2020-10-25 10:41:57

出现乱码问题,并且文件也没有在upload文件夹出现,我上传的文件是 “新建文本文档.txt”,内容是 “这里是测试的文件”,在webcontent目录下新建了upload文件夹但是没有接收到

http://img.mukewang.com/climg/5f94e59809b1aeab05100081.jpg

<%@ 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回答

好帮手慕小尤

2020-10-26

同学你好,请同学查看是否是在接收传递参数信息时出现乱码,如果是,则同学可以在doPost()中添加如下代码:

request.setCharacterEncoding("UTF-8"); //是对请求的设置字符集编码。
response.setCharacterEncoding("UTF-8"); //是设置响应的字符集编码。对请求和响应都设置字符集编码后可以避免产生乱码。



0

好帮手慕小尤

2020-10-25

同学你好,1. 测试代码并未发现乱码情况,建议同学查看文件字符集,建议修改字符集为utf-8。

2. 项目是搭建到Tomcat中的,所以上传完成后的文件,建议同学Tomcat中进行查找。

http://img.mukewang.com/climg/5f951f3309b15f1b07420506.jpg

http://img.mukewang.com/climg/5f951f330921d91a04140038.jpg

0
honwayshon
h 老师文件我找到了,文件内容也是完整的,但是接收到的文件名是乱码,文件是用系统创建的txt,老师这个情况该怎么解决,应该修改txt的编码格式吗,在代码中有没有办法解决呢
h020-10-26
共1条回复

0 学习 · 9666 问题

查看课程