EX08_11.java
上传用户:vip_99
上传日期:2021-03-27
资源大小:61159k
文件大小:4k
源码类别:

android开发

开发平台:

Java

  1. package irdc.ex08_11;
  2. /* import相关class */
  3. import java.io.DataOutputStream;
  4. import java.io.FileInputStream;
  5. import java.io.InputStream;
  6. import java.net.HttpURLConnection;
  7. import java.net.URL;
  8. import android.app.Activity;
  9. import android.app.AlertDialog;
  10. import android.content.DialogInterface;
  11. import android.os.Bundle;
  12. import android.view.View;
  13. import android.widget.Button;
  14. import android.widget.TextView;
  15. public class EX08_11 extends Activity
  16. {
  17.   /* 变量声明
  18.    * newName:上传后在服务器上的文件名称
  19.    * uploadFile:要上传的文件路径
  20.    * actionUrl:服务器上对应的程序路径 */
  21.   private String newName="image.jpg";
  22.   private String uploadFile="/data/data/irdc.ex08_11/image.jpg";
  23.   private String actionUrl="http://10.10.100.33/upload/upload.jsp";
  24.   private TextView mText1;
  25.   private TextView mText2;
  26.   private Button mButton;
  27.   @Override
  28.   public void onCreate(Bundle savedInstanceState)
  29.   {
  30.     super.onCreate(savedInstanceState);
  31.     setContentView(R.layout.main);
  32.     mText1 = (TextView) findViewById(R.id.myText2);
  33.     mText1.setText("文件路径:n"+uploadFile);
  34.     mText2 = (TextView) findViewById(R.id.myText3);
  35.     mText2.setText("上传网址:n"+actionUrl);
  36.     /* 设置mButton的onClick事件处理 */    
  37.     mButton = (Button) findViewById(R.id.myButton);
  38.     mButton.setOnClickListener(new View.OnClickListener()
  39.     {
  40.       public void onClick(View v)
  41.       {
  42.         uploadFile();
  43.       }
  44.     });
  45.   }
  46.   /* 上传文件至Server的方法 */
  47.   private void uploadFile()
  48.   {
  49.     String end = "rn";
  50.     String twoHyphens = "--";
  51.     String boundary = "*****";
  52.     try
  53.     {
  54.       URL url =new URL(actionUrl);
  55.       HttpURLConnection con=(HttpURLConnection)url.openConnection();
  56.       /* 允许Input、Output,不使用Cache */
  57.       con.setDoInput(true);
  58.       con.setDoOutput(true);
  59.       con.setUseCaches(false);
  60.       /* 设置传送的method=POST */
  61.       con.setRequestMethod("POST");
  62.       /* setRequestProperty */
  63.       con.setRequestProperty("Connection", "Keep-Alive");
  64.       con.setRequestProperty("Charset", "UTF-8");
  65.       con.setRequestProperty("Content-Type",
  66.                          "multipart/form-data;boundary="+boundary);
  67.       /* 设置DataOutputStream */
  68.       DataOutputStream ds = 
  69.         new DataOutputStream(con.getOutputStream());
  70.       ds.writeBytes(twoHyphens + boundary + end);
  71.       ds.writeBytes("Content-Disposition: form-data; " +
  72.                     "name="file1";filename="" +
  73.                     newName +""" + end);
  74.       ds.writeBytes(end);   
  75.       /* 取得文件的FileInputStream */
  76.       FileInputStream fStream = new FileInputStream(uploadFile);
  77.       /* 设置每次写入1024bytes */
  78.       int bufferSize = 1024;
  79.       byte[] buffer = new byte[bufferSize];
  80.       int length = -1;
  81.       /* 从文件读取数据至缓冲区 */
  82.       while((length = fStream.read(buffer)) != -1)
  83.       {
  84.         /* 将资料写入DataOutputStream中 */
  85.         ds.write(buffer, 0, length);
  86.       }
  87.       ds.writeBytes(end);
  88.       ds.writeBytes(twoHyphens + boundary + twoHyphens + end);
  89.       /* close streams */
  90.       fStream.close();
  91.       ds.flush();
  92.       /* 取得Response内容 */
  93.       InputStream is = con.getInputStream();
  94.       int ch;
  95.       StringBuffer b =new StringBuffer();
  96.       while( ( ch = is.read() ) != -1 )
  97.       {
  98.         b.append( (char)ch );
  99.       }
  100.       /* 将Response显示于Dialog */
  101.       showDialog(b.toString().trim());
  102.       /* 关闭DataOutputStream */
  103.       ds.close();
  104.     }
  105.     catch(Exception e)
  106.     {
  107.       showDialog(""+e);
  108.     }
  109.   }
  110.   /* 显示Dialog的method */
  111.   private void showDialog(String mess)
  112.   {
  113.     new AlertDialog.Builder(EX08_11.this).setTitle("Message")
  114.      .setMessage(mess)
  115.      .setNegativeButton("确定",new DialogInterface.OnClickListener()
  116.      {
  117.        public void onClick(DialogInterface dialog, int which)
  118.        {          
  119.        }
  120.      })
  121.      .show();
  122.   }
  123. }