java实现文件上传下载功能,javaweb文件的下载和上传功能的实现
沒有文件上傳的普通form表單上傳
上傳的數值可以在servlet中獲取得到
String?s_bPublishDate=request.getParameter("fname");
String?s_aPublishDate=request.getParameter("lname");
這樣就可以在后臺得到Input框中輸入的數值呢
文件上傳和普通的表單上傳有什么不一樣呢?
。。。。。。。。。。。。。。。。。。
注意在這個有文件提交的form表單中,form中多了?enctype="multipart/form-data"。
表單標簽中設置enctype=”multipart/form-data”來確保匿名上載文件的正確編碼。
表單中enctype=”multipart/form-data”的意思,是設置表單的MIME編碼。默認情況,這個編碼格式是application/x-www-form-urlencoded,不能用于文件上傳;只有使用了multipart/form-data,才能完整的傳遞文件數據,進行下面的操作.
這個時候,我們input中的內容(所有不論文件還是什么)都變成了二進制格式傳遞過去了,所以request就得不到值了。 也就是說加了這段代碼,用request就會傳遞不成功,取表單值加入數據庫時,用到下面的:
FileItemFactory?factory=new?DiskFileItemFactory();
//FileItemFactory?一個工廠接口,用于創建FileLtem的實例
//DiskFileItemFactory?這實現創建FileLtem的實例保持其內容可以在內存較小的項目,
或者磁盤上的臨時文件較大的項目。
ServletFileUpload?upload=new?ServletFileUpload(factory);
//數據如何個別零件儲存是由廠用于創建;一個給定的一部分可能是內存,磁盤,或其他地方。構造該類的一個實例,使用提供的fileitem廠創建實例。
List?items=null;便利一個List鏈表準備接受全部的數據
try?{
items=upload.parseRequest(request);
}?catch?(Exception?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}
Iterator?itr=items.iterator();
//遍歷上傳的內容,迭代器
while(itr.hasNext()){
//如果迭代器里面還有內容,返回true,返回迭代的下一個元素。并把迭代輸出的結果強制轉換成Car對象。
FileItem?item=(FileItem)?itr.next();獲得這個元素,然后先后面走。
if(item.isFormField()){
//如果是普通表單,不是文件表單。
String?fieldName=item.getFieldName();
//得到數據的name,就是input中name的名字。
if("newsId".equals(fieldName)){
//你要的數據和name比較,看是不是你要的數據。
if(StringUtil.isNotEmpty(item.getString("utf-8"))){
//如果不為空的話。獲取item中的值,且轉化成了utf-8格式。
news.setNewsId(Integer.parseInt(item.getString("utf-8")));
}
}
if("title".equals(fieldName)){
news.setTitle(item.getString("utf-8"));
}
if("isUserful".equals(fieldName)){
news.setIsUserful(Integer.parseInt(item.getString("utf-8")));
}
if("content".equals(fieldName)){
news.setContent(item.getString("utf-8"));
}
if("author".equals(fieldName)){
news.setAuthor(item.getString("utf-8"));
}
if("typeId".equals(fieldName)){
news.setTypeId(Integer.parseInt(item.getString("utf-8")));
}
if("isHead".equals(fieldName)){
news.setIsHead(Integer.parseInt(item.getString("utf-8")));
}
if("isImage".equals(fieldName)){
news.setIsImage(Integer.parseInt(item.getString("utf-8")));
}
if("isHot".equals(fieldName)){
news.setIsHot(Integer.parseInt(item.getString("utf-8")));
}
if("imageName".equals(fieldName)&&news.getImageName()==null){
if(StringUtil.isNotEmpty(item.getString("utf-8"))){
news.setImageName(item.getString("utf-8").split("/")[1]);
//split("/")[1]不要后面的尾椎,eg??.doc
}
}
}else?if(!"".equals(item.getName())){
//如果為文件表單
try?{
String?imageName=DateUtil.getCurrentDateStr()+item.getName();
//這里是我自己給文件取得一個名字。
news.setImageName(DateUtil.getCurrentDateStr()+item.getName());
String?filePath=PropertiesUtil.getValue("filePath")+imageName;
//把文件寫到那個地方,上傳的路徑,你懂的。
item.write(new?File(filePath));
//把文件寫進去就ok了。
}?catch?(Exception?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}
}
}
一個附帶上傳文件大小限制的上傳文件
http://www.cnblogs.com/xdp-gacl/p/4200090.html
總結
以上是生活随笔為你收集整理的java实现文件上传下载功能,javaweb文件的下载和上传功能的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电商后台原型 rp_电商选型:一站式线上
- 下一篇: python安装目录结构_python软