Android 实现文件上传功能(upload)

文件上传在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" />

时间: 2024-11-03 03:40:16

Android 实现文件上传功能(upload)的相关文章

文件上传功能的实现

一:文件上传功能 先要在在index.jsp的界面上初始化一个表单. 代码如下: <body> <form enctype="multipart/form-data" action="<%=path%>/1.jsp" method="post"> 姓名:<input type="text" name="username"/> 选择文件:<input ty

文件/大文件上传功能实现(JS+PHP)全过程

文件/大文件上传功能实现(JS+PHP) 参考博文:掘金-橙红年代 前端大文件上传 路漫漫 其修远 PHP + JS 实现大文件分割上传 本文是学习文件上传后的学习总结文章,从无到有实现文件上传功能,前端小白写的代码不是最优,如果有错误的地方请多多指教,如果本文对你有所帮助,深感荣幸. 近期公司的项目中,涉及到上传大文件的问题,大文件上传用普通表单上传时出现的问题是,无法断点续存,一但中途中断上传,就要重头开始,这很明显不是我们想要的,所以经过一番查询,学习了一下大文件分割上传的方法.并且使用简

达到HTTP合约Get、Post和文件上传功能——采用WinHttp介面

于<采用WinHttp实现HTTP协议Get.Post和文件上传功能>一文中,我已经比較具体地解说了怎样使用WinHttp接口实现各种协议. 在近期的代码梳理中,我认为Post和文件上传模块能够得到简化,于是差点儿重写了这两个功能的代码.由于Get.Post和文件上传功能的基础(父)类基本没有修改,函数调用的流程也基本没有变化,所以本文我将重点解说修改点. (转载请指明出于breaksoftware的csdn博客) 首先我改动了接口的字符集.之前我都是使用UNICODE作为接口參数类型,当中一

实现HTTP协议Get、Post和文件上传功能——使用libcurl接口实现

之前我们已经详细介绍了WinHttp接口如何实现Http的相关功能.本文我将主要讲解如何使用libcurl库去实现相关功能.(转载请指明出于breaksoftware的csdn博客) libcurl在http://curl.haxx.se/libcurl/有详细的介绍,有兴趣的朋友可以去读下.本文我只是从实际使用的角度讲解其中的一些功能. libcurl中主要有两个接口类型:CURL和CURLM.CURL又称easy interface,它接口简单.使用方便,但是它是一个同步接口,我们不能使用它

实现HTTP协议Get、Post和文件上传功能——使用WinHttp接口实现

在<使用WinHttp接口实现HTTP协议Get.Post和文件上传功能>一文中,我已经比较详细地讲解了如何使用WinHttp接口实现各种协议.在最近的代码梳理中,我觉得Post和文件上传模块可以得到简化,于是几乎重写了这两个功能的代码.因为Get.Post和文件上传功能的基础(父)类基本没有改动,函数调用的流程也基本没有变化,所以本文我将重点讲解修改点.(转载请指明出于breaksoftware的csdn博客) 首先我修改了接口的字符集.之前我都是使用UNICODE作为接口参数类型,其中一个

AEAI Miscdp文件上传功能使用心得

1.概述 在实际项目中,我们常常可以遇到这样的情况:上传头像.上传图片.上传视频.上传音乐.上传作业,等等-那么如何使用MiscdpStudio对这类功能进行开发,就成了MiscdpStudio使用者必须掌握的技能之一. 接下来,我就对单表操作模型,简单介绍一下如何对文件进行上传.这里,我们主要使用的是fileupload组件,当然,这也是开发平台中自带的组件. 2.创建数据表 在这里,我们需要在数据库创建两个表,一个是业务表.另一个是关联表.关联表里有三个字段:逻辑主键.业务标识字段.附件标识

Android图片文件上传实例

原文:Android图片文件上传实例 源代码下载地址:http://www.zuidaima.com/share/1550463718132736.htm 支持拍照图片上传和从手机相册中获取图片上传到服务器端的功能 源码截图

iOS 的 Safari 文件上传功能详解

iOS 6 给 Safari 浏览器带来的另外一个功能是文件上传,终于 Safari 终于支持 input 输入框的文件类型了,并且还支持 HTML媒体捕获(HTML Media Capture). 上传单张图片或者视频 <input type="file"> 可以选择直接拍照或者摄影,也可以从相册中选取.选好之后,iOS 上的 Safari 和其他浏览器不同是它显示图片的截图,而不是图片的临时名称. 上传多张图片或者视频 如果你想一次上传多张图片,可以使用 HTML5 一

Spring MVC 文件上传功能详解

前言 在Spring MVC中实现文件上传功能并不复杂,前端使用HTML语法,后端使用特定抽象.参考Spring Boot相关文档即可.本文主要讲解常见资料忽略的两个问题: 文件上传错误 链接重置问题 版本:Spring Boot 1.5x 文件上传错误 一个关注点是如何处理文件上传期间发生的错误,错误主要分为两类: IOException 文件读取或写入错误. MultipartException 上传文件时,超过文件大小上限所触发的异常. IOException 只需要在Controller