SpringMVC结合Ajaxfileupload异步多文件上传至远程服务器
发布时间:2020-05-24 16:29:12 所属栏目:Java 来源:互联网
导读:SpringMVC结合Ajaxfileupload异步多文件上传至远程服务器
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 项目中我们可能会使用到异步上传并且有时需要是异步的,那么Ajaxfileupload是一个不错的选择,最近刚 做了一个多文件上传到远程服务器,远程服务器提供接口,当远程服务器上传结束后返回一个文件的服务器地址。分享出来给有需要的参考 下,Ajaxfileupload默认是一次只能上传一个文件的,所以需要稍稍修改下他的源码就可以上传多个文件,这里就不多说,百度一下自然就知道。<inputtype="file"id="playeraddress"name="playeraddress"/> <inputtype="file"id="cover"name="cover"/> //这里就是两个fileid自己定义 $.ajaxFileUpload({
url:web_path+'upload/upload.do',secureuri:false,data:data,//需要传递的数据json格式
fileElementId:['playeraddress','cover'],dataType:'json',success:function(data){
//上传成功后的回调。
},error:function(data){
}
});
/**
*
*
*@paramrequest
*@paramresponse
*@paramaudioItem
*@return
*/
@RequestMapping(value="/upload.do",method={RequestMethod.POST})
@ResponseBody
publicStringaddMusic(HttpServletRequestrequest,HttpServletResponseresponse,AudioItemaudioItem){
//这里无需理会,这只是
StringuploadFileUrl=GlobalUtil.getValue("upload_audioItem_audio_url");
StringuploadIconUrl=GlobalUtil.getValue("upload_audioItem_pic_url");
CommonsMultipartResolverresolver=newCommonsMultipartResolver(
request.getServletContext());
if(resolver.isMultipart(request)){
MultipartHttpServletRequestmultiRequest=(MultipartHttpServletRequest)request;
//取得request中的所有文件名
Iterator<String>iter=multiRequest.getFileNames();
while(iter.hasNext()){
StringfileName=iter.next();
//取得上传文件
MultipartFilefile=multiRequest.getFile(fileName);
/**
*获取文件名
*/
StringoriginalFilename=file.getOriginalFilename();
if("playeraddress".equals(fileName)&&!"".equals(originalFilename)){
try{
//这里的upload方法就是以httppost的方式上传文件的稍后贴出
Stringurl=BaseService.upload(uploadFileUrl,file.getOriginalFilename(),file.getInputStream());
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
if("cover".equals(fileName)&&!"".equals(originalFilename)){
try{
Stringicon=BaseService.upload(uploadIconUrl,file.getInputStream());
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
//这里需要注意使用Ajaxfileupload需要使用以下方式返回结果回调不了success方法
response.setContentType("text/html");
try{
response.getWriter().write("ok");
}catch(IOExceptione){
e.printStackTrace();
}
}
returnnull;
}
//最后一步了
publicstaticStringupload(Stringhttpurl,StringfileName,InputStreaminputStream){
Stringresult="";
try{
//这里看你的网络环境按需设置代理正常都不需要理会
if(true){
System.setProperty("http.proxyHost",BaseService.PROXY_IP);
System.setProperty("http.proxyPort",BaseService.PROXY_PORT);
}
StringBOUNDARY="---------7d4a6d158c9";//定义数据分隔线
URLurl=newURL(httpurl);
HttpURLConnectionconn=(HttpURLConnection)url.openConnection();
//发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("connection","Keep-Alive");
conn.setRequestProperty("user-agent","Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)");
conn.setRequestProperty("Charsert","UTF-8");
conn.setRequestProperty("Content-Type","multipart/form-data;boundary="+BOUNDARY);
OutputStreamout=newDataOutputStream(conn.getOutputStream());
byte[]end_data=("rn--"+BOUNDARY+"--rn").getBytes();//定义最后数据分隔线
StringBuildersb=newStringBuilder();
sb.append("--");
sb.append(BOUNDARY);
sb.append("rn");
sb.append("Content-Disposition:form-data;name="file"+1
+"";filename=""+fileName+""rn");
sb.append("Content-Type:application/octet-streamrnrn");
byte[]data=sb.toString().getBytes();
out.write(data);
DataInputStreamin=newDataInputStream(inputStream);
intbytes=0;
byte[]bufferOut=newbyte[1024];
while((bytes=in.read(bufferOut))!=-1){
out.write(bufferOut,0,bytes);
}
out.write("rn".getBytes());//多个文件时,二个文件之间加入这个
in.close();
out.write(end_data);
out.flush();
out.close();
//定义BufferedReader输入流来读取URL的响应
BufferedReaderreader=newBufferedReader(newInputStreamReader(
conn.getInputStream()));
Stringline=null;
while((line=reader.readLine())!=null){
result+=line;
}
}catch(Exceptione){
System.out.println("发送POST请求出现异常!"+e);
}
returnnewJSONObject(result).getString("url");
}
//到这就结束了!希望能帮到你。
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
