java form 上传文件_java通过表单进行文件上传的几种方法
上傳文件的分類:
無論什么方式上傳文件,都要用post提交
方式一:
前端:表單方式上傳文件
后端:
使用上傳技術(shù)是apache中的Commons-fileupload.jar
commons-io.jar
servlet:
1.在表單提交的時(shí)候把表單中的所有的數(shù)據(jù)封裝給request對(duì)象
2.通過commons-fileupload的api方法轉(zhuǎn)換request對(duì)象
中的數(shù)據(jù)到一個(gè)List集合中
// Parse the request
List items = upload.parseRequest(request);
3.遍歷 list集合,集合中都包含表單中所有的數(shù)據(jù)
包含文件域和非文件域
// Process the uploaded items
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = iter.next();
if (item.isFormField()) {
//是非文件域
String name = item.getFieldName();
String value = item.getString();
...
} else {
//文件域
String fieldName = item.getFieldName();
String fileName = item.getName();
String contentType = item.getContentType();
boolean isInMemory = item.isInMemory();
long sizeInBytes = item.getSize();
...
//真正上傳文件
item.write(服務(wù)端的某個(gè)目錄)
}
}
spring mvc:
在springmvc中底層使用還是commons-fileupload.jar
和commons-io.jar,說明spring mvc對(duì)apache的Commons-fileupload
產(chǎn)品做二次封裝,封裝成:org.springframework.web.multipart.commons.CommonsMultipartResolver
在springmvc上傳文件api用CommonsMultipartResolver類中的api
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
用springmvc的api上傳文件
MultipartFile的對(duì)象調(diào)用一個(gè)上傳方法
對(duì)象.transto();把文件上傳到指定的服務(wù)器上
方式二:
前端:沒有表單,用ajax上傳文件,必須借助第三方
js工具ajaxfileupload.js,類似的上傳文件
的js工具有很多,ajaxfileupload.js工具是基于
jquery庫
//異步提交
$.ajaxFileUpload({
url:basePath+"user/new",//提交的服務(wù)器地址
secureuri:false,//url鏈接是否安全
fileElementId:"addHeadPicture",//文件域的id
type:"post",//必須是post提交
data:{"loginName":loginName,"password":password1,"nickName":nickName,"age":age,"sex":sex,"roleId":roleId},//傳遞的數(shù)據(jù)
dataType:"text",//注意text,可以寫成json
success:function(data,status){
//alert(data);
//回的結(jié)果串中有其他的字符串,通過下面的方式
//把沒用的字符串替換掉
data=data.replace(/
/g,'');data=data.replace("
",'');data=data.replace("
",'');data=data.replace(/
/g,'');data=data.replace("
",'');data=data.replace("
",'');alert(data);
},
error:function(){
alert("請(qǐng)求失敗!");
}
});
后端:
使用上傳技術(shù)是apache中的Commons-fileupload.jar
commons-io.jar
servlet:
1.在表單提交的時(shí)候把表單中的所有的數(shù)據(jù)封裝給request對(duì)象
2.通過commons-fileupload的api方法轉(zhuǎn)換request對(duì)象
中的數(shù)據(jù)到一個(gè)List集合中
// Parse the request
List items = upload.parseRequest(request);
3.遍歷 list集合,集合中都包含表單中所有的數(shù)據(jù)
包含文件域和非文件域
// Process the uploaded items
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = iter.next();
if (item.isFormField()) {
//是非文件域
String name = item.getFieldName();
String value = item.getString();
...
} else {
//文件域
String fieldName = item.getFieldName();
String fileName = item.getName();
String contentType = item.getContentType();
boolean isInMemory = item.isInMemory();
long sizeInBytes = item.getSize();
...
//真正上傳文件
item.write(服務(wù)端的某個(gè)目錄)
}
}
spring mvc:
在springmvc中底層使用還是commons-fileupload.jar
和commons-io.jar,說明spring mvc對(duì)apache的Commons-fileupload
產(chǎn)品做二次封裝,封裝成:org.springframework.web.multipart.commons.CommonsMultipartResolver
在springmvc上傳文件api用CommonsMultipartResolver類中的api
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
用springmvc的api上傳文件
MultipartFile的對(duì)象調(diào)用一個(gè)上傳方法
對(duì)象.transferTo();把文件上傳到指定的服務(wù)器上
補(bǔ)充:
能夠給服務(wù)端提交數(shù)據(jù)的方式
1.用form表單
2.用超鏈接
3.用ajax異步提交
總結(jié)
以上是生活随笔為你收集整理的java form 上传文件_java通过表单进行文件上传的几种方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 泛型嵌套泛型_Java泛型嵌套
- 下一篇: 北京环球影城怎么预约