简单实现Android文件上传

发布时间 - 2026-01-10 21:49:09    点击率:

文件上传在B/S应用中是一种十分常见的功能,那么在Android平台下是否可以实现像B/S那样的文件上传功能呢?答案是肯定的。下面是一个模拟网站程序上传文件的例子。

首先新建一个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" />

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android  # 文件上传  # 基于标准http实现Android多文件上传  # Android引用开源框架通过AsyncHttpClient实现文件上传  # Android使用xUtils3.0实现文件上传  # Android带进度条的文件上传示例(使用AsyncTask异步任务)  # 使用Android的OkHttp包实现基于HTTP协议的文件上传下载  # Android基于Http协议实现文件上传功能的方法  # android文件上传示例分享(android图片上传)  # Android中发送Http请求(包括文件上传、servlet接收)的实例代码  # Android程序开发通过HttpURLConnection上传文件到服务器  # Android中使用HttpURLConnection实现GET POST JSON数据与下载图片  # Golang+Android基于HttpURLConnection实现的文件上传功能示例  # 上传  # 是一个  # 是一种  # 可以实现  # 别忘了  # 大家多多  # 新建一个  # 上传文件  # http  # data  # actionUrl  # jsp  # String  # newName  # extends  # private  # lt  # uploadFile  # htys 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251811 】 【 AI营销90571


相关推荐: 如何基于PHP生成高效IDC网络公司建站源码?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  如何实现建站之星域名转发设置?  Laravel如何使用Telescope进行调试?(安装和使用教程)  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  智能起名网站制作软件有哪些,制作logo的软件?  js实现获取鼠标当前的位置  高性能网站服务器部署指南:稳定运行与安全配置优化方案  如何在自有机房高效搭建专业网站?  如何在橙子建站上传落地页?操作指南详解  iOS验证手机号的正则表达式  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  Android GridView 滑动条设置一直显示状态(推荐)  JS去除重复并统计数量的实现方法  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  Android使用GridView实现日历的简单功能  如何快速辨别茅台真假?关键步骤解析  如何在万网自助建站中设置域名及备案?  如何快速搭建自助建站会员专属系统?  详解jQuery中的事件  Laravel如何使用Eloquent进行子查询  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  EditPlus中的正则表达式 实战(1)  JavaScript常见的五种数组去重的方式  公司网站制作需要多少钱,找人做公司网站需要多少钱?  javascript日期怎么处理_如何格式化输出  Laravel如何实现用户密码重置功能?(完整流程代码)  如何基于云服务器快速搭建网站及云盘系统?  Laravel如何使用Collections进行数据处理?(实用方法示例)  微信h5制作网站有哪些,免费微信H5页面制作工具?  如何彻底卸载建站之星软件?  高端云建站费用究竟需要多少预算?  JavaScript如何实现错误处理_try...catch如何捕获异常?  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  iOS UIView常见属性方法小结  详解Huffman编码算法之Java实现  jQuery 常见小例汇总  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  韩国服务器如何优化跨境访问实现高效连接?  进行网站优化必须要坚持的四大原则  独立制作一个网站多少钱,建立网站需要花多少钱?  PHP正则匹配日期和时间(时间戳转换)的实例代码  Python数据仓库与ETL构建实战_Airflow调度流程详解  如何获取免费开源的自助建站系统源码?  iOS正则表达式验证手机号、邮箱、身份证号等  Mybatis 中的insertOrUpdate操作  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  高性能网站服务器配置指南:安全稳定与高效建站核心方案  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  如何在阿里云服务器自主搭建网站?