歡迎您光臨本站 註冊首頁

android通過servlet服務器保存文件到手機

←手機掃碼閱讀     ml5rwbikls @ 2020-06-17 , reply:0

本文實例為大家分享了android通過servlet服務器保存文件到手機的具體代碼,供大家參考,具體內容如下

服務器端:(手機和電腦連接的同一個WIFI)

  package com;     import java.io.FileInputStream;  import java.io.IOException;  import java.io.InputStream;  import java.io.PrintWriter;     import javax.servlet.ServletException;  import javax.servlet.http.HttpServlet;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse;     import sun.misc.BASE64Encoder;     public class download extends HttpServlet {      /**   * Constructor of the object.   */   public download() {   super();   }      /**   * Destruction of the servlet. 
   */   public void destroy() {   super.destroy(); // Just puts "destroy" string in log   // Put your code here   }      /**   * The doGet method of the servlet. 
   *   * This method is called when a form has its tag value method equals to get.   *    * @param request the request send by the client to the server   * @param response the response send by the server to the client   * @throws ServletException if an error occurred   * @throws IOException if an error occurred   */   public void doGet(HttpServletRequest request, HttpServletResponse response)   throws ServletException, IOException {     // response.setContentType("text/html");  // PrintWriter out = response.getWriter();  // out.println("");  // out.println("");  // out.println("");  // out.println("");  // out.print(" This is ");  // out.print(this.getClass());  // out.println(", using the GET method");  // out.println("");  // out.println("");  // out.flush();  // out.close();   doPost(request, response);      }      /**   * The doPost method of the servlet. 
   *   * This method is called when a form has its tag value method equals to post.   *    * @param request the request send by the client to the server   * @param response the response send by the server to the client   * @throws ServletException if an error occurred   * @throws IOException if an error occurred   */   public void doPost(HttpServletRequest request, HttpServletResponse response)   throws ServletException, IOException {      response.setContentType("text/html");   //request.setCharacterEncoding("utf-8");////這句至關重要,不然中文的文件名稱顯示亂碼   PrintWriter out = response.getWriter();  // out.println("");  // out.println("");  // out.println("");  // out.println("");  // out.print(" This is ");  // out.print(this.getClass());  // out.println(", using the POST method");  // out.println("");  // out.println("");   out.print(GetImageStr());///輸出文件的字符串   out.flush();   out.close();            }      /**   * Initialization of the servlet. 
   *   * @throws ServletException if an error occurs   */   public void init() throws ServletException {   // Put your code here   }   public static String GetImageStr()    {//將圖片文件轉化為字節數組字符串,並對其進行Base64編碼處理    // String imgFile = "d://test.jpg";//待處理的圖片       //String imgFile="F://upload//1.jpg";////可以   // String imgFile="F://upload//軟工大作業.ppt";////可以   String imgFile="F://upload//愛的勇氣.mp3";//不可以   // String imgFile="F://upload//upload.rar";//可以   InputStream in = null;    byte[] data = null;    //讀取圖片字節數組    try    {    in = new FileInputStream(imgFile);    data = new byte[in.available()];    in.read(data);    in.close();    }    catch (IOException e)    {    e.printStackTrace();    }    //對字節數組Base64編碼    BASE64Encoder encoder = new BASE64Encoder();    return encoder.encode(data);//返回Base64編碼過的字節數組字符串    } ///GetImageStr   }

 

手機端:

  package com.example.getfile_2;     import java.io.FileOutputStream;  import java.io.OutputStream;     import org.apache.http.HttpResponse;  import org.apache.http.client.HttpClient;  import org.apache.http.client.methods.HttpGet;  import org.apache.http.client.methods.HttpPost;  import org.apache.http.impl.client.DefaultHttpClient;  import org.apache.http.params.BasicHttpParams;  import org.apache.http.params.HttpConnectionParams;  import org.apache.http.util.EntityUtils;     import android.app.Activity;  import android.os.Bundle;  import android.util.Log;  import android.view.Menu;  import android.view.MenuItem;  import android.view.View;  import android.view.View.OnClickListener;  import android.widget.Button;     public class MainActivity extends Activity {      private static final int REQUEST_TIMEOUT = 5 * 1000;// 設置請求超時10秒鐘   private static final int SO_TIMEOUT = 10*60 * 1000; // 設置請求超時時間10秒鐘   private static final int LOGIN_OK = 1;   private Button button1, button2;      @Override   protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.activity_main);   button1 = (Button) findViewById(R.id.button1);      button2 = (Button) findViewById(R.id.button2);      button1.setOnClickListener(new OnClickListener() {      @Override   public void onClick(View v) {   // TODO 自動生成的方法存根   Log.i("button1", "button1");   fun_HttpPost();      }   });   }      public void fun_HttpPost() {   new Thread(new Runnable() {   @Override   public void run() {   // TODO 自動生成的方法存根   String urlStr = "http://192.168.0.102:8080/download/servlet/download";   HttpPost request = new HttpPost(urlStr);      try {   HttpClient client = getHttpClient();   // 執行請求返回相應   HttpResponse response = client.execute(request);   // 判斷是否請求成功   if (response.getStatusLine().getStatusCode() == 200) {   // 獲得響應信息   String responseMessage = EntityUtils.toString(response   .getEntity());   Log.i("responseMessage", responseMessage + ",長度:"   + responseMessage.length());   GenerateImage(responseMessage);   Log.i("生成成功", "生成成功");   }   } catch (Exception e) {   e.printStackTrace();   }      }// //run()   }).start();   }// /fun_register()      //base64字符串轉化成圖片    public static boolean GenerateImage(String imgStr)    { //對字節數組字符串進行Base64解碼並生成圖片    if (imgStr == null) //圖像數據為空    return false;    Decoder.BASE64Decoder decoder = new Decoder.BASE64Decoder();    try    {    //Base64解碼    byte[] b = decoder.decodeBuffer(imgStr);    for(int i=0;i<b.length;++i)    {    if(b[i]<0)    {//調整異常數據    b[i]+=256;    }    }    //生成jpeg圖片    // String imgFilePath = "d://222.jpg";//新生成的圖片    // String imgFilePath = "F://upload//1_2.jpg";///可以   //String imgFilePath = "F://upload//軟工大作業_2.ppt";//可以  // String imgFilePath="F://upload//upload_2.rar";   // String imgFilePath="/sdcard/1spray/1_2.jpg";//可以   // String imgFilePath = "/sdcard/1spray/軟工大作業_2.ppt";//可以   String imgFilePath ="/sdcard/1spray/愛的勇氣_2.mp3";//9M不行了?????   OutputStream out = new FileOutputStream(imgFilePath);    out.write(b);    out.flush();    out.close();    return true;    }    catch (Exception e)    {    return false;    }    }    // 初始化HttpClient,並設置超時   public HttpClient getHttpClient() {   BasicHttpParams httpParams = new BasicHttpParams();   HttpConnectionParams.setConnectionTimeout(httpParams, REQUEST_TIMEOUT);   HttpConnectionParams.setSoTimeout(httpParams, SO_TIMEOUT);   HttpClient client = new DefaultHttpClient(httpParams);   return client;   }// /public HttpClient getHttpClient()  }

 

  

 

  

 

                                                       

   


[ml5rwbikls ] android通過servlet服務器保存文件到手機已經有294次圍觀

http://coctec.com/docs/android/show-post-238843.html