<p>本实例实现了android上传手机图片至服务器,服务器进行保存</p><p>服务器servlet代码</p><pre class="brush:java;toolbar:false">publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ Stringtemp=request.getSession().getServletContext().getRealPath(&quot;/&quot;)+&quot;temp&quot;;//临时目录 System.out.println(&quot;temp=&quot;+temp); Stringloadpath=request.getSession().getServletContext().getRealPath(&quot;/&quot;)+&quot;Image&quot;;//上传文件存放目录 System.out.println(&quot;loadpath=&quot;+loadpath); DiskFileUploadfu=newDiskFileUpload(); fu.setSizeMax(1*1024*1024);//设置允许用户上传文件大小,单位:字节 fu.setSizeThreshold(4096);//设置最多只允许在内存中存储的数据,单位:字节 fu.setRepositoryPath(temp);//设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录 //开始读取上传信息 intindex=0; ListfileItems=null; try{ fileItems=fu.parseRequest(request); System.out.println(&quot;fileItems=&quot;+fileItems); }catch(Exceptione){ e.printStackTrace(); } Iteratoriter=fileItems.iterator();//依次处理每个上传的文件 while(iter.hasNext()) { FileItemitem=(FileItem)iter.next();//忽略其他不是文件域的所有表单信息 if(!item.isFormField()) { Stringname=item.getName();//获取上传文件名,包括路径 name=name.substring(name.lastIndexOf(&quot;\\&quot;)+1);//从全路径中提取文件名 longsize=item.getSize(); if((name==null||name.equals(&quot;&quot;))&amp;&amp;size==0) continue; intpoint=name.indexOf(&quot;.&quot;); name=(newDate()).getTime()+name.substring(point,name.length())+index; index++; FilefNew=newFile(loadpath,name); try{ item.write(fNew); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } else//取出不是文件域的所有表单信息 { Stringfieldvalue=item.getString(); //如果包含中文应写为:(转为UTF-8编码) //Stringfieldvalue=newString(item.getString().getBytes(),&quot;UTF-8&quot;); } } Stringtext1=&quot;11&quot;; response.sendRedirect(&quot;result.jsp?text1=&quot;+text1); }</pre><p>  android客户端代码</p><pre class="brush:java;toolbar:false"> publicclassPhotoUploadextendsActivity{ privateStringnewName=&quot;image.jpg&quot;; privateStringuploadFile=&quot;/sdcard/image.JPG&quot;; privateStringactionUrl=&quot;http://192.168.0.71:8086/HelloWord/myForm&quot;; privateTextViewmText1; privateTextViewmText2; privateButtonmButton; @Override publicvoidonCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.photo_upload); mText1=(TextView)findViewById(R.id.myText2); //&quot;文件路径:\n&quot;+ mText1.setText(uploadFile); mText2=(TextView)findViewById(R.id.myText3); //&quot;上传网址:\n&quot;+ mText2.setText(actionUrl); /*设置mButton的onClick事件处理*/ mButton=(Button)findViewById(R.id.myButton); mButton.setOnClickListener(newView.OnClickListener() { publicvoidonClick(Viewv) { uploadFile(); } }); } /*上传文件至Server的方法*/ privatevoiduploadFile() { Stringend=&quot;\r\n&quot;; StringtwoHyphens=&quot;--&quot;; Stringboundary=&quot;*****&quot;; try { URLurl=newURL(actionUrl); HttpURLConnectioncon=(HttpURLConnection)url.openConnection(); /*允许Input、Output,不使用Cache*/ con.setDoInput(true); con.setDoOutput(true); con.setUseCaches(false); /*设置传送的method=POST*/ con.setRequestMethod(&quot;POST&quot;); /*setRequestProperty*/ con.setRequestProperty(&quot;Connection&quot;,&quot;Keep-Alive&quot;); con.setRequestProperty(&quot;Charset&quot;,&quot;UTF-8&quot;); con.setRequestProperty(&quot;Content-Type&quot;, &quot;multipart/form-data;boundary=&quot;+boundary); /*设置DataOutputStream*/ DataOutputStreamds= newDataOutputStream(con.getOutputStream()); ds.writeBytes(twoHyphens+boundary+end); ds.writeBytes(&quot;Content-Disposition:form-data;&quot;+ &quot;name=\&quot;file1\&quot;;filename=\&quot;&quot;+ newName+&quot;\&quot;&quot;+end); ds.writeBytes(end); /*取得文件的FileInputStream*/ FileInputStreamfStream=newFileInputStream(uploadFile); /*设置每次写入1024bytes*/ intbufferSize=1024; byte[]buffer=newbyte[bufferSize]; intlength=-1; /*从文件读取数据至缓冲区*/ while((length=fStream.read(buffer))!=-1) { /*将资料写入DataOutputStream中*/ ds.write(buffer,0,length); } ds.writeBytes(end); ds.writeBytes(twoHyphens+boundary+twoHyphens+end); /*closestreams*/ fStream.close(); ds.flush(); /*取得Response内容*/ InputStreamis=con.getInputStream(); intch; StringBufferb=newStringBuffer(); while((ch=is.read())!=-1) { b.append((char)ch); } /*将Response显示于Dialog*/ showDialog(&quot;上传成功&quot;+b.toString().trim()); /*关闭DataOutputStream*/ ds.close(); } catch(Exceptione) { showDialog(&quot;上传失败&quot;+e); } } /*显示Dialog的method*/ privatevoidshowDialog(Stringmess) { newAlertDialog.Builder(PhotoUpload.this).setTitle(&quot;Message&quot;) .setMessage(mess) .setNegativeButton(&quot;确定&quot;,newDialogInterface.OnClickListener() { publicvoidonClick(DialogInterfacedialog,intwhich) { } }) .show(); } }</pre>
T:0.007899s,M:212.32 KB
返回顶部 留言