android手机端上传指定路径的文件

本文介绍了一个简单的Android应用程序示例,展示了如何从Android设备上传图片到服务器的过程。该示例使用了HTTP POST请求来发送multipart/form-data格式的数据,并通过DataOutputStream进行数据传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

手机端代码:
public class MainActivity extends Activity {

     @Override
     protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
          setContentView(R.layout. activity_main);
     }
     public void onclick(View view){
          String uploadUrl = "http://192.168.0.103:8080/upload/UploadServlet" ;//ip根据机器ip设置
          String end = "\r\n";
          String twoHyphens = "--";//两个连字符
          String boundary = "******";//分界符
          String filename = Environment.getExternalStorageDirectory()+ "/my.jpg";//上传文件的路径
           try {
              URL url = new URL(uploadUrl);
              HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
              httpURLConnection.setDoInput( true);
              httpURLConnection.setDoOutput( true);
              httpURLConnection.setUseCaches( false);
              httpURLConnection.setRequestMethod( "POST");//必须大写
               httpURLConnection.setRequestProperty( "Connection", "Keep-Alive");
               httpURLConnection.setRequestProperty( "Charset", "UTF-8");
               httpURLConnection.setRequestProperty( "Content-type", "multipart/form-data;boundary=" +boundary);
              DataOutputStream dos = new DataOutputStream(httpURLConnection.getOutputStream());
              dos.writeBytes(twoHyphens+boundary+end);
               dos.writeBytes( "Content-Disposition:form-data; name=\"file\"; filename=\""
                        +filename.substring(filename.lastIndexOf( "/")+1)+"\"" +end);
              dos.writeBytes(end);
               if(!new File(filename).exists()){
                   Toast. makeText(this, "文件不存在" , 1000).show();
                    return;
              }
              FileInputStream fis = new FileInputStream(filename);
               byte[] buf = new byte[8192];
               int count = 0;
               while((count = fis.read(buf))>0){
                   dos.write(buf, 0, count);
              }
              fis.close();
              dos.writeBytes(end);
               dos.writeBytes(twoHyphens+boundary+twoHyphens+end);
              dos.flush();
              InputStream is = httpURLConnection.getInputStream();
              InputStreamReader isr = new InputStreamReader(is,"utf-8" );
              BufferedReader br = new BufferedReader(isr);
              String result = br.readLine();
              Toast. makeText(this, result, Toast.LENGTH_LONG).show();
              dos.close();
              is.close();             
          } catch (Exception e) {
              e.printStackTrace();
          }
     }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值