文件上传两种方法

两种文件上传方法

第一种文件上传方式,用到commons-fileupload.jar,commons-io.jar

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

HttpSession session = request.getSession();

session.setAttribute("SESSIONID",session.getId());

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

try {

List<FileItem> items = upload.parseRequest(request);

Iterator<FileItem> itr = items.iterator();

while(itr.hasNext()){

FileItem item=(FileItem)itr.next();

String fileName=item.getName();

if(fileName!=null){

File fullFile=new File(item.getName());

File savedFile=new File("d:/uploads",fullFile.getName());

item.write(savedFile);

}

}

} catch (FileUploadException e) {

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

}

}

第二种文件上传方式,这里用到cos组件方式上传,需要导入cos.jarn,不过srping中的multipart包已经有了....

public ModelAndView uploadImageCoCustQuiz(HttpServletRequest request,HttpServletResponse response) throws Exception {
System.out.print("我进到上传文件的方法了!!!!");

MultipartFile mf = null;
File file = null;
String upLoadFilePath = null;
String fileName=null;
JSONObject jo = new JSONObject();
try{

final String path = "D:/uploadFile/";

final File dirPath = new File(path);
if(!dirPath.exists())
dirPath.mkdirs();

//让request能转换成multipart...对象,那么ext上传文件一定要设置 某个form.getForm().fileUpload = true或者设置

formpanel的enctype : 'multipart/form-data',

MultipartResolver resolver = new CommonsMultipartResolver();
if(resolver.isMultipart(request)){

final MultipartHttpServletRequest mhs = (MultipartHttpServletRequest) request;

//只要你前台的文本框是文件类型的,不管你有没有上传文件,后台依然有得到流,只是应该说这个流是否为无效流,如果是无效流则

jdbctemplate插入或者更新时就是插入null了..

//只要前台的文本框为文件类型,不管有没有上传文件,mf都可以得到,不会为空
mf = mhs.getFile("uploadFile");

final String uploadFileName = mf.getOriginalFilename();

//mf.getInputStream() 得到文件输入流
if(uploadFileName!=null || uploadFileName!="")
{
final String objStr = uploadFileName.substring(uploadFileName.lastIndexOf(".")).trim();
//String uploadFileNameStr = uploadFileName.substring(0,uploadFileName.indexOf(".")).trim();
fileName = "1" + objStr;
}

//fileName.trim();
upLoadFilePath = path+uploadFileName;
file = new File(upLoadFilePath);
mf.transferTo(file);
//上传文件完毕

} catch (Exception e) {
System.out.print("上传文件方法中出现异常。。。。。。。。。。。。。。。。。。。");
}
}else{
System.out.println("连文件都不是!!!");
}


jo.put("success", true);

response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.print(jo.toString());
out.flush();
out.close();
return null;
}

cos组件的multipartRequest的8个构造方法和8个方法

在Cos组件中,MultipartRequest类主要负责文件上传的处理。MultipartRequest有8个构造函数:

1.Public MultipartRequest ( HttpServletRequest request, String saveDirectory,) throws IOException



2.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize) throws IOException



3.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize, FileRenamePolicy policy) throws IOException



4.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize, String encoding) throws IOException



5.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize, String encoding, FileRenamePolicy policy) throws IOException



6.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, String encoding) throws IOException



7.Public MultipartRequest ( HttpServletRequest request, String saveDirectory) throws IOException



8.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize) throws IOException



前6种构造函数都是用来专门处理HTTP协议的,saveDirectory是上传文件要存储在服务器端的目录名称;maxPostSize是用来限制用户上传文件大小的,若超过maxPostSzie,会产生IOException,默认上传文件大小是1MB;encoding可以设定用何种编码方式来上传文件名称,可以解决中文问题。

MultipartRequest类工具有8种方法,利用这些方法,我们可以取得请求的相关信息:

Public Enumeration getParameterNames() 可以取得请求参数的名称

public String getParameter(String name)  此方法传回参数为name的值

public String[] getParameterValues(String name) 此方法主要用在取得当一指定参数具有多个值时,它会传回String的数组

public Enumeration getFileName() 传回所有文件输入类型的名称

public String getFilesystemNames(String name) 用此方法得到上传文件的真正的文件名,这里的name指文件输入类型的名称

public String getContentType(String name) 此方法得到上传文件的内容类型

public File getFile(String name) 此方法得到一个文件对象,代表储存在服务器上的name文件

public String getOriginalFileName(String name) 返回文件在修改政策有效之前的文件名

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值