返回顶部

收藏

Android 实现文件上传功能

更多

文件上传在B/S应用中是一种十分常见的功能,那么在Android平台下是否可以实现像B/S那样的文件上传功能呢?答案是肯定的。下面是一个模拟网站程序上传文件的例子。这里只写出了Android部分的代码,服务器的代码没有贴出来,有需要完整上传功能代码的朋友可以跟我联系哟…

首先新建一个Android工程,新建主启动Activity:

MainActivity.java:

package com.xzq.upload;

import java.io.DataOutputStream;

import java.io.FileInputStream;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.URL;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

import android.widget.Toast;

public class MainActivity extends Activity

{

private String newName = "htys.mp3";

//要上传的本地文件路径

private String uploadFile = "/data/data/com.xzq/htys.mp3";

//上传到服务器的指定位置

private String actionUrl = "http://192.168.100.100:8080/upload/upload.jsp";

private TextView mTextView1;

private TextView mTextView2;

private Button mButton1;

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mTextView1 = (TextView) findViewById(R.id.myText2);

 mTextView1.setText("FilePath:/n" + uploadFile);

mTextView2 = (TextView) findViewById(R.id.myText3);

 mTextView2.setText("UploadPath:/n" + actionUrl);

 /* 设定mButton的onClick事件处理 */

mButton1 = (Button) findViewById(R.id.myButton);

mButton1.setOnClickListener(new View.OnClickListener()

 {

  public void onClick(View v)

   {

     uploadFile();

   }

 });

}

private void uploadFile()

{

 String end = "/r/n";

 String Hyphens = "--";

 String boundary = "*****";

try

 {

  URL url = new URL(actionUrl);

   HttpURLConnection con = (HttpURLConnection) url.openConnection();

   /* 允许Input、Output,不使用Cache */

  con.setDoInput(true);

  con.setDoOutput(true);

  con.setUseCaches(false);

   /* 设定传送的method=POST */

   con.setRequestMethod("POST");

   /* setRequestProperty */

   con.setRequestProperty("Connection", "Keep-Alive");

   con.setRequestProperty("Charset", "UTF-8");

   con.setRequestProperty("Content-Type",

       "multipart/form-data;boundary=" + boundary);

   /* 设定DataOutputStream */

  DataOutputStream ds = new DataOutputStream(con.getOutputStream());

   ds.writeBytes(Hyphens + boundary + end);

   ds.writeBytes("Content-Disposition: form-data; "

       + "name=/"file1/";filename=/"" + newName + "/"" + end);

   ds.writeBytes(end);

   /* 取得文件的FileInputStream */

  FileInputStream fStream = new FileInputStream(uploadFile);

   /* 设定每次写入1024bytes */

  int bufferSize = 1024;

  byte[] buffer = new byte[bufferSize];

  int length = -1;

   /* 从文件读取数据到缓冲区 */

  while ((length = fStream.read(buffer)) != -1)

   {

     /* 将数据写入DataOutputStream中 */

     ds.write(buffer, 0, length);

   }

   ds.writeBytes(end);

   ds.writeBytes(Hyphens + boundary + Hyphens + end);

   fStream.close();

   ds.flush();

   /* 取得Response内容 */

   InputStream is = con.getInputStream();

  int ch;

  StringBuffer b = new StringBuffer();

  while ((ch = is.read()) != -1)

   {

    b.append((char) ch);

   }

  System.out.println("上传成功");

  Toast.makeText(MainActivity.this, "上传成功", Toast.LENGTH_LONG)

       .show();

   ds.close();

} catch (Exception e)

 {

  System.out.println("上传失败" + e.getMessage());

  Toast.makeText(MainActivity.this, "上传失败" + e.getMessage(),

      Toast.LENGTH_LONG).show();

 }

}

}

最后别忘了在AndroidManifest.xml中设置访问Internet的权限:

<uses-permission android:name="android.permission.INTERNET" />

标签:java

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. 果冻想 发表 2018-03-24 05:26:38 JSP内置对象——exception对象
  2. 果冻想 发表 2018-03-24 05:30:20 JSP内置对象——out和page对象
  3. 果冻想 发表 2018-03-24 05:39:32 JSP内置对象——pageContext对象
  4. 果冻想 发表 2018-03-24 05:44:26 JSP内置对象——request对象
  5. 果冻想 发表 2018-03-24 05:47:27 JSP内置对象——response对象
  6. 果冻想 发表 2018-03-24 06:01:06 JSP内置对象——session对象
  7. 果冻想 发表 2018-03-24 06:12:44 JSP中的四大作用域
  8. 果冻想 发表 2018-03-24 06:17:00 JSP自定义标签学习笔记
  9. 果冻想 发表 2018-03-24 06:23:07 Java Web Filter学习笔记
  10. 果冻想 发表 2018-03-24 06:27:22 Java Web Listener学习笔记
  11. hollischuang 发表 2018-03-21 13:04:42 我反编译了Java 10的本地变量类型推断
  12. antil 发表 2018-03-21 05:05:28 .java 后缀勒索病毒分析报告

发表评论