
import java.io.File
import java.io.IOException
import java.util.Iterator
import java.util.List
import javax.servlet.ServletConfig
import javax.servlet.ServletContext
import javax.servlet.ServletException
import javax.servlet.http.HttpServlet
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse
import javax.servlet.http.HttpSession
import org.apache.commons.fileupload.FileItem
import org.apache.commons.fileupload.disk.DiskFileItemFactory
import org.apache.commons.fileupload.servlet.ServletFileUpload
public class upload extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 2654821751525075943L
private ServletContext sc
private String savePath
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response)
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username=""
request.setCharacterEncoding("utf-8")
DiskFileItemFactory factory=new DiskFileItemFactory()
ServletFileUpload upload=new ServletFileUpload(factory)//专门用来完成文件上传的类
try {
List items=upload.parseRequest(request)//解析请求,返回一个存储了所有表单元素的集合
Iterator it=items.iterator()
while(it.hasNext()){
FileItem item=(FileItem)it.next()
if(item.isFormField()){//如果是普通的文本信息,返回true
username=item.getString("utf-8")
}else{
if(item.getName()!=null&&!item.getName().equals("")){//防止抛出空指针,判断一下是否为空
System.out.println("上传文件的大小:"+item.getSize())
System.out.println("上传文件的类型:"+item.getContentType())
System.out.println("上传文件的名称:"+item.getName())
File temp=new File(item.getName())
File file=new File(sc.getRealPath("/")+savePath,temp.getName())
item.write(file)
HttpSession hs=request.getSession()
hs.setAttribute("path", item.getName())
request.setAttribute("msg", "上传文件成功了")
}else{
request.setAttribute("msg", "上传文件失败了")
}
}
}
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace()
request.setAttribute("msg", "上传文件失败了")
}
request.getRequestDispatcher("/result.jsp?username="+username).forward(request, response)
}
/**
* 重写init方法
*/
public void init(ServletConfig config){
savePath=config.getInitParameter("savePath")//获取初始化的参数
sc=config.getServletContext()//获取ServletContext对象,并赋给sc
}
}
[align=right][align=left]DiskFileItemFactory factory=new DiskFileItemFactory()String path=request.getRealPath("/upload")
System.out.println(path)
factory.setRepository(new File(path))
factory.setSizeThreshold(1024*1024)
ServletFileUpload upload=new ServletFileUpload(factory)
try{
List<FileItem>ls=upload.parseRequest(request)
for (FileItem item : ls) {
if(item.isFormField()){
String name=item.getFieldName()
String value=item.getString("gbk")
request.setAttribute(name, value)
}else{
String name=item.getFieldName()
String value=item.getName()
int start=value.lastIndexOf("\\")
String fileName=value.substring(start+1)
System.out.println(fileName)
request.setAttribute(name, fileName)
Encoding en=new Encoding()
//item.write(new File(path,fileName))
OutputStream os=new FileOutputStream(new File(path,fileName))
InputStream is=item.getInputStream()
byte [] bt=new byte[400]
int length=0
while((length=is.read(bt))>0){
os.write(bt, 0, length)
}
os.close()
is.close()
}
}
}catch (Exception e) {
e.printStackTrace()
}[/align][/align]
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)