JSP 上传文件
主要问题:可以获取到上传文件的内容但是网页出现NullPointer报错理想效果应该是打印出“文件上传成功"
次要问题:文件上传获取的sava.txt文件中文是乱码的
文件相关代码下面已给出
上传页面
网页报错
上传的文件内容
获取的文件内容
书上的实例
jsp文件
```html
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<head>
<title>upload</title>
</head>
<body>
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
</br>
<input type="submit" value="开始上传">
</form>
</body>
</html>
servlet文件
package com.jqe.file.servlet;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberInputStream;
import java.io.LineNumberReader;
import java.io.PrintWriter;
import java.io.RandomAccessFile;
import java.io.UnsupportedEncodingException;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UploadServlet extends HttpServlet{
private PrintWriter out;
@Override
protected void doPost(HttpServletRequest req,HttpServletResponse resp)
{
try{
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(req.getInputStream()));
File file=new File("e://save.txt");
if(!file.exists()){
file.createNewFile();
}
File fileTemp=new File("e://temp.txt");
if(!fileTemp.exists()){
fileTemp.createNewFile();
}
BufferedWriter bufferedWriter= new BufferedWriter(new FileWriter(fileTemp));
String str=null;
int maxNumLine=0;
while((str=bufferedReader.readLine())!=null){
maxNumLine++;
bufferedWriter.write(str);
bufferedWriter.newLine();
bufferedWriter.flush();
}
bufferedWriter.close();
bufferedReader.close();
BufferedReader bufferedReader1=new BufferedReader(new FileReader(new File("e://temp.txt")));
BufferedWriter bufferedWriter1=new BufferedWriter(new FileWriter(file));
String str1=null;
int num=0;
while((str1=bufferedReader1.readLine())!=null){
num++;
if(num>4&&num<maxNumLine){
bufferedWriter1.write(str1);
bufferedWriter1.newLine();
bufferedWriter1.flush();
}
}
bufferedReader1.close();
bufferedWriter1.close();
fileTemp.delete();
out.println("文件提交成功");
}catch(UnsupportedEncodingException e){
//TODO Auto-generated catch block
e.printStackTrace();
out.println("其他错误");
}catch(IOException e){
//TODO Auto-generated catch block
out.println("文件提交失败");
e.printStackTrace();
}
}
}
web.xml
```html
<servlet>
<servlet-name>upload</servlet-name>
<servlet-class>com.jqe.file.servlet.UploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>upload</servlet-name>
<url-pattern>/upload</url-pattern>
</servlet-mapping>