package com.itheima.tfy.servlet;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.UUID;
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.FileUploadBase;
import org.apache.commons.fileupload.ProgressListener;
import org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class UploadServlet1 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try{
request.setCharacterEncoding("UTF-8");
String storePath=getServletContext().getRealPath("/WEB-INF/upload");
DiskFileItemFactory factory=new DiskFileItemFactory();
//设置临时文件的存放路径
factory.setRepository(new File(getServletContext().getRealPath("/temp")));
ServletFileUpload upload=new ServletFileUpload(factory);
upload.setProgressListener(new ProgressListener() {
//pBytesRead:已读字节数
//pContentLength:文件大小 字节总长度
//pItems: FileItem 文件的索引
public void update(long pBytesRead, long pContentLength, int pItems) {
////XMLHttpServletRequest:js的对象
//
//把pBytesRead/pContentLength*100,返回到界面上:XML或JSON(AJAX)
System.out.println("已读"+pBytesRead+",总大小:"+pContentLength+",第几项:"+pItems
+"!!!上传进度="+(pBytesRead/pContentLength*100)+"%");
System.out.println(pBytesRead/pContentLength);
}
});
//设置单个文件的大小
upload.setFileSizeMax(6*1024*1024);
upload.setSizeMax(20*1024*1024);
boolean isMultipart=ServletFileUpload.isMultipartContent(request);
if(isMultipart){
List<FileItem> items=upload.parseRequest(request);
for(FileItem item:items){
if(item.isFormField()){
String fileName=item.getFieldName();
String fileValue=item.getString("UTF-8");
System.out.println(fileName+"="+fileValue);
}else{
String mimeType=item.getContentType();
if(mimeType.startsWith("/image")){
InputStream in=item.getInputStream();//文件内容的输入流
String fileName=item.getName();//上传文件的文件名
if(fileName==null&&"".equals(fileName)){
continue;
}
fileName=fileName.substring(fileName.lastIndexOf("\\")+1);//原来的文件名
fileName=UUID.randomUUID().toString()+"_"+fileName;//UUID.randomUUID()后的文件名
System.out.println(request.getRemoteAddr()+"上传了"+fileName);
String newPath=makeDir(storePath,fileName);
OutputStream out=new FileOutputStream(newPath+"\\"+fileName);
int len=-1;
byte []b=new byte[1024];
while((len=in.read(b))!=-1){
out.write(b, 0, len);
}
in.close();
out.close();
item.delete();//删除临时文件
}
}
}
}
}catch(FileSizeLimitExceededException e){
System.out.println("单个文件不能超过6M");
}catch(FileUploadBase.SizeLimitExceededException e){
System.out.println("总文件大小不能超过6M");
}
catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e);
}
}
private String makeDir(String storePath, String fileName) {
int hashCode=fileName.hashCode();
int dir1=hashCode & 0xf;
int dir2=(hashCode& 0xf0)>>4;
String newPath=storePath+"\\"+dir1+"\\"+dir2;
File file=new File(newPath);
if(!file.exists()){
file.mkdir();
}
return newPath;
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
分享到:
相关推荐
boolean isMultipart = ServletFileUpload.isMultipartContent(request);//检查输入请求是否为multipart表单数据。 if (isMultipart == true) { FileItemFactory factory = new DiskFileItemFactory();//为该请求...
boolean a=ServletFileUpload.isMultipartContent(request); if(a){ FileItemFactory factory=new DiskFileItemFactory(); ServletFileUpload upload=new ServletFileUpload (factory); Iterator items; try{...
boolean isEmulator = EmulatorDetector.isEmulator(); 多开检测 boolean isVirtual = CheckVirtual.isRunInVirtual(context); Hook检测 boolean isHook = CheckHook.isHook(context); Root检测 boolean isRoot = ...
Java中的正则表达式是一种强大的文本匹配工具,它可以用来检查和操作字符串。在Java中,正则表达式的相关类都位于java.util.regex包中。 下面是一些Java中常用的正则表达式语法和使用...boolean isMatch = matcher.fin
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with ... * The ASF licenses this file to You under the Apache ...
public boolean isExists(User u) { boolean flag=false; Session session=sessionFactory.openSession(); String hql="from User as u where u.username=? and u.userpass=? and u.userright=?"; Query ...
boolean bool = $assertionsDisabled; return; } } public ReqDownSoftPack() { String str = this.sQUA; setSQUA(str); int i = this.nGUID; setNGUID(i); ArrayList localArrayList = this....
boolean flag=userService.addUser(user); if(flag==true){ response.sendRedirect("jsp/userAdmin.jsp"); }else { response.sendRedirect("jsp/userAdd.jsp"); } } public void init() throws...
boolean ismember=false;//varirable defination String name=request.getParameter("userid"); String code=request.getParameter("password"); session.setAttribute("password",code); byte[] temp = ...
destexe : string) : Boolean;var i : Integer; Src grpic : TMemoryStream; id : ICONINFORMATION; ih : ICONHEADER; ic : ICONDIRENTRYCOMMON; hinst : LongInt; oldentry : Int64;begin Result := False; Src :=...
此方法不需要重写底层的类,直接实例化后,加入config文件中的connectionName即可直接运行,方法支持事务 调用方法如下: DB db = new DB(); ... Boolean bol = db.ExecuteSQL("local", lst, true);
public boolean compareRGB(int a,int b) { String ahx=Integer.toHexString(a); String bhx=Integer.toHexString(b); // Log.d("mainAct", ahx+"//"+bhx); String ared=ahx.substring(0, 2); String ...
private static boolean isChinese(char c) { Character.UnicodeBlock ub = Character.UnicodeBlock.of(c); return ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_...
Public Function CheckSignature() As Boolean Dim signature As String = System.Web.HttpContext.Current.Request.QueryString("signature") Dim timestamp As String = System.Web.HttpContext.Current.Request...
} else if (type.equals("boolean")) { object = jsonObject2.getBoolean(varName[i]); } else if (type.equals("class java.lang.String")) { object = jsonObject2.getString(varName[i]); ...
// boolean flag = false;//默认失败 // if(username.indexOf("sxt")>=0 || username.contains("尚学堂")){ // flag = true; // } User user = null;//默认登录失败 // UserDao userDao = new UserDaoImpl(); // ...
boolean flag = false; Login ck2 = new Login(); request.setCharacterEncoding("UTF-8"); String num = request.getParameter("num"); String password = request.getParameter("password"); ...
HeapUnit Test library to introspecting your Java heap via heap dumps. HeapUnit can capture heap dump of own JVM ... boolean open = i.value("fd") != null; System.out.println(i.rehydrate() (open ?
final Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE); setMobileDataEnabledMethod.setAccessible(true); ...
public ResultSet getCourse( ){ String sql="select ... boolean f=true; String sql="select id from teacher where id ='"+id+"'"; sqlBean db =new sqlBean(); try{ ResultSet rs=db.executeQuery(sq