圖片檔案上傳

weixin_33816946發表於2012-02-29

//一些定義的變數 private String newName = "image.jpg"; private String uploadFile = "/sdcard/apple.jpg"; //private String actionUrl = "http://localhost:8080/testCutPic/upload.php"; //上傳圖片地址,上傳的圖片檔案引數名為fileToUpload private String actionUrl="http://192.168.1.64/svn_ys/sousoutu/api/api_imgupload.php";

 HttpClient請求客戶端方式:

private void postFile(){ HttpClient httpclient = new DefaultHttpClient(); httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1); HttpPost httppost = new HttpPost("http://192.168.1.64/svn_ys/sousoutu/api/api_imgupload.php"); File file = new File(uploadFile); // File file2=new File(uploadFile); ContentBody cbFile = new FileBody(file, "image/jpeg"); // ContentBody cbFile2 = new FileBody(file2, "image/jpeg"); MultipartEntity mpEntity = new MultipartEntity(); mpEntity.addPart("fileToUpload", cbFile); // mpEntity.addPart("fileToUpload2", cbFile2); // mpEntity.addPart("字串引數", new StringBody("user")); httppost.setEntity(mpEntity); Log.d("log", "請求資訊: " + httppost.getRequestLine()); // System.out.println("executing request " + httppost.getRequestLine()); HttpResponse response = null; try { response = httpclient.execute(httppost); } catch (ClientProtocolException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } HttpEntity resEntity = response.getEntity(); Log.d("log", "響應資訊:"+response.getStatusLine().toString()); // System.out.println(response.getStatusLine()); if (resEntity != null) { try { final String response_str=EntityUtils.toString(resEntity); Log.d("log", response_str); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (resEntity != null) { try { resEntity.consumeContent(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } httpclient.getConnectionManager().shutdown(); }位元組流的方式上傳:

private void uploadFile() { String end = "\r\n"; String twoHyphens = "--"; String boundary = "*****"; try { URL url = new URL(actionUrl); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setDoInput(true); con.setDoOutput(true); con.setUseCaches(false); con.setRequestMethod("POST"); con.setRequestProperty("Connection", "Keep-Alive"); con.setRequestProperty("Charset", "UTF-8"); con.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); DataOutputStream ds = new DataOutputStream(con.getOutputStream()); ds.writeBytes(twoHyphens + boundary + end); ds.writeBytes("Content-Disposition: form-data; " + "name=\"file1\";filename=\"" + newName + "\"" + end); ds.writeBytes(end); FileInputStream fStream = new FileInputStream(uploadFile); int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; int length = -1; while ((length = fStream.read(buffer)) != -1) { ds.write(buffer, 0, length); } ds.writeBytes(end); ds.writeBytes(twoHyphens + boundary + twoHyphens + end); fStream.close(); ds.flush(); InputStream is = con.getInputStream(); int ch; StringBuffer b = new StringBuffer(); while ((ch = is.read()) != -1) { b.append((char) ch); } showDialog("上傳成功" + b.toString().trim()); ds.close(); } catch (Exception e) { e.printStackTrace(); showDialog("上傳失敗" + e); } }

用到的dialog對話方塊,用來顯示測試結果:

private void showDialog(String mess) { new AlertDialog.Builder(TestuploadImageActivity.this) .setTitle("Message").setMessage(mess) .setNegativeButton("確定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { } }).show(); }


相關文章