因浏览器差异有的用拆有的不用拆g://123.jpg------->多前面g://
第一种需要拆分的!
package upload.serlvet;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import javax.servlet.ServletException;
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;
public class UploadsServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
//k
upload.setFileSizeMax(1024*1024*100); //100M
try {
List<FileItem> fileItems = upload.parseRequest(request);
for(FileItem fileItem:fileItems){
if(fileItem.isFormField()){
String name = fileItem.getFieldName(); //input name
String value = fileItem.getString(); //input value
System.out.println(name+":"+value);
}else{
String fileName = fileItem.getName(); //文件名称
//C:\Users\chenhongjun\Desktop\tag_1388040641790.txt
D:\视频\day52\录像12.avi
System.out.println(fileName+"------------------");
int index = fileName.lastIndexOf("\\");
if(index!=-1){
fileName = fileName.substring(index+1);
}
System.out.println(index+"========="+fileName);
//存储的位置
File file = new File("f:\\", uniqueFileName(fileName));
//创建输出流
FileOutputStream fos = new FileOutputStream(file);
//处理上传
InputStream is = fileItem.getInputStream();
//有关流的操作
byte[] buffer = new byte[1024];
int len=0;
while((len=(is.read(buffer)))!=-1){
fos.write(buffer, 0, len);
}
fos.flush();
fos.close();
is.close();
//删除临时文件
fileItem.delete();
}
//1.中文问题 怎么解决
//2.上传文件的大小限制问题
//3.上传文件类型限制的问题 .jpg .gif .png
//4.上传的文件 不选择 不让上传.
//D:\视频\day52\录像12.avi
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String uniqueFileName(String fileName){
//获取.最后出现的索引位置
int index = fileName.lastIndexOf(".");
//截取.之前名称
String fName = fileName.substring(0, index);
//截取的后缀 包括.
String suffix = fileName.substring(index);
//拼接操作
fileName = fName+"_"+System.currentTimeMillis()+suffix;
return fileName;
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
第二种不需要拆分的
package upload.serlvet;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import javax.servlet.ServletException;
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;
public class UploadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//第一步:创建DiskFileItemFactory对象 (FileItem) name upload
//采用了默认的缓冲区 和默认的临时文件保存的目录
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
System.out.println(System.getProperty("java.io.tmpdir"));
//第二步:解析器
ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
try {
//第三步:对请求进行解析
List<FileItem> fileItems = servletFileUpload.parseRequest(request);
//第四步:遍历List集合
for(FileItem fileItem :fileItems){
//判断字段是否是 普通的字段
if(fileItem.isFormField()){
//获取字段的名称
String fieldName = fileItem.getFieldName();
//获取字段的值
String fieldValue = fileItem.getString();
//输出
System.out.println(fieldName+":"+fieldValue);
}else{
//获取文件的名称
String fileName = fileItem.getName();
System.out.println(fileName+"--------");
//存储的位置
File file = new File("F:\\", fileName);
//创建输出流
FileOutputStream fos = new FileOutputStream(file);
//处理上传
InputStream is = fileItem.getInputStream();
//有关流的操作
byte[] buffer = new byte[1024];
int len=0;
while((len=(is.read(buffer)))!=-1){
fos.write(buffer, 0, len);
}
fos.flush();
fos.close();
is.close();
//删除临时文件
fileItem.delete();
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void test(HttpServletRequest request) throws IOException {
/* String name = request.getParameter("name");
String upload = request.getParameter("upload");
System.out.println(name+"---------"+upload);*/
InputStream is = request.getInputStream();
byte buffer[] = new byte[1024];
int len=0;
while((len=is.read(buffer))!=-1){
System.out.println(new String(buffer, 0, len));
}
is.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
配好servlet文件
uploads.do
写好界面::::
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@include file="/common/tag.jsp" %>
<%@include file="/common/jquery.jsp" %>
<fmt:setBundle basename="csdn"/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<!--河软CSDN ---------------------blog.csdn.net/lipfbk-->
<form action="${pageContext.request.contextPath}/uploadFile.do" enctype="multipart/form-data" method="post">
上传者:<input type="text" name="name" /><br/>
选择文件:<input type="file" name="upload"/><br/>
<input type="submit" value='<fmt:message key="submit"></fmt:message>'/>
</form>
</body>
</html>
ok!!!!!!!!!希望对大家有帮助!!