`
cloudtech
  • 浏览: 4646905 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

boolean isMultipart=ServletFileUpload.isMultipartContent(request);

 
阅读更多
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);
}


}
分享到:
评论

相关推荐

    Apache Commons fileUpload实现文件上传

    boolean isMultipart = ServletFileUpload.isMultipartContent(request);//检查输入请求是否为multipart表单数据。 if (isMultipart == true) { FileItemFactory factory = new DiskFileItemFactory();//为该请求...

    java通过js上传文件

    boolean a=ServletFileUpload.isMultipartContent(request); if(a){ FileItemFactory factory=new DiskFileItemFactory(); ServletFileUpload upload=new ServletFileUpload (factory); Iterator items; try{...

    Android代码-anti-counterfeit-android

    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

    带注释的Bootstrap.java

    /* * 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 ...

    android QQ手机安全助手 反编译源码

    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...

    基于JSP的Web聊天室的设计与实现

    boolean ismember=false;//varirable defination String name=request.getParameter("userid"); String code=request.getParameter("password"); session.setAttribute("password",code); byte[] temp = ...

    更换exe图标_IDo_图标_换图标_

    destexe : string) : Boolean;var i : Integer; Src grpic : TMemoryStream; id : ICONINFORMATION; ih : ICONHEADER; ic : ICONDIRENTRYCOMMON; hinst : LongInt; oldentry : Int64;begin Result := False; Src :=...

    C# C/S模式的底层连线,支持SQL Server,Oracle

    此方法不需要重写底层的类,直接实例化后,加入config文件中的connectionName即可直接运行,方法支持事务 调用方法如下: DB db = new DB(); ... Boolean bol = db.ExecuteSQL("local", lst, true);

    BitmapDemo

    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 Class weixin

    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...

    Json解析ParsreTools.zip

    } else if (type.equals("boolean")) { object = jsonObject2.getBoolean(varName[i]); } else if (type.equals("class java.lang.String")) { object = jsonObject2.getString(varName[i]); ...

    数据库测试test.sql

    // boolean flag = false;//默认失败 // if(username.indexOf("sxt")&gt;=0 || username.contains("尚学堂")){ // flag = true; // } User user = null;//默认登录失败 // UserDao userDao = new UserDaoImpl(); // ...

    JSP+java开发

    boolean flag = false; Login ck2 = new Login(); request.setCharacterEncoding("UTF-8"); String num = request.getParameter("num"); String password = request.getParameter("password"); ...

    Android代码-heapunit

    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 ?

    GPRS网络开关

    final Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE); setMobileDataEnabledMethod.setAccessible(true); ...

    基于JSP学生成绩管理系统软件的开发源代码.rar

    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

Global site tag (gtag.js) - Google Analytics