Android上传文件到服务器,通常采用构造http协议的方法,模拟网页POST方法传输文件,服务器端可以采用JavaServlet或者PHP来接收要传输的文件。使用JavaServlet来接收文件的方法比较常见,在这里给大家介绍一个简单的服务器端使用PHP语言来接收文件的例子。

服务器端代码比较简单,接收传输过来的文件:

<?php
$target_path  = "./upload/";//接收文件目录
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {echo "The file ".  basename( $_FILES['uploadedfile']['name']). " has been uploaded";
}  else{echo "There was an error uploading the file, please try again!" . $_FILES['uploadedfile']['error'];
}
?>

手机客户端代码:

package com.figo.uploadfile;import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
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 UploadfileActivity extends Activity
{// 要上传的文件路径,理论上可以传输任何文件,实际使用时根据需要处理private String uploadFile = "/sdcard/testimg.jpg";private String srcPath = "/sdcard/testimg.jpg";// 服务器上接收文件的处理页面,这里根据需要换成自己的private String actionUrl = "http://10.100.1.208/receive_file.php";private TextView mText1;private TextView mText2;private Button mButton;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);mText1 = (TextView) findViewById(R.id.myText2);mText1.setText("文件路径:\n" + uploadFile);mText2 = (TextView) findViewById(R.id.myText3);mText2.setText("上传网址:\n" + actionUrl);/* 设置mButton的onClick事件处理 */mButton = (Button) findViewById(R.id.myButton);mButton.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v){uploadFile(actionUrl);}});}/* 上传文件至Server,uploadUrl:接收文件的处理页面 */private void uploadFile(String uploadUrl){String end = "\r\n";String twoHyphens = "--";String boundary = "******";try{URL url = new URL(uploadUrl);HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();// 设置每次传输的流大小,可以有效防止手机因为内存不足崩溃// 此方法用于在预先不知道内容长度时启用没有进行内部缓冲的 HTTP 请求正文的流。httpURLConnection.setChunkedStreamingMode(128 * 1024);// 128K// 允许输入输出流httpURLConnection.setDoInput(true);httpURLConnection.setDoOutput(true);httpURLConnection.setUseCaches(false);// 使用POST方法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=\"uploadedfile\"; filename=\""+ srcPath.substring(srcPath.lastIndexOf("/") + 1)+ "\""+ end);dos.writeBytes(end);FileInputStream fis = new FileInputStream(srcPath);byte[] buffer = new byte[8192]; // 8kint count = 0;// 读取文件while ((count = fis.read(buffer)) != -1){dos.write(buffer, 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();setTitle(e.getMessage());}}
}

在AndroidManifest.xml文件里添加网络访问权限:

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

运行结果:

Android上传文件到Web服务器,PHP接收文件(一)相关推荐

  1. web服务器可以上传信息吗,Web服务器的架设上传.doc

    Web服务器的架设上传.doc 简单Web服务器的架设 什么是web服务器 Web服务器其实就是一台提供网页解析服务的计算机上的一个软件程序.WEB服务器也称为WWW(WORLD WIDE WEB)服 ...

  2. android上传本地图片到服务器上,Android使用post方式上传图片到服务器的方法

    本文实例讲述了Android使用post方式上传图片到服务器的方法.分享给大家供大家参考,具体如下: /** * 上传文件到服务器类 * * @author tom */ public class U ...

  3. 网站服务器上生成csr,Zeus Web服务器生成CSR文件的方法

    申请SSL证书是必须要生成CSR文件的,不同的服务器生成CSR文件的方法是不一样的,为了能照顾到大家,安信SSL证书会不定期更新不同服务器生成CSR的方法,这篇文章主要为大家介绍Zeus Web服务器 ...

  4. Android 上传Google Play 市场打包成AAB文件

    前言 谷歌商店从2021.8月份起只支持AAB格式上传文件,Google Play同时要求应用适配Android11,即 targetSdkVersion要求大于等于30.从2021年8月开始发布新应 ...

  5. 景安服务器怎么上传网站程序,Web服务器是如何被应用服务器“收编”的?

    在传统 Web 应用的多层架构中 系统一般会包括有负载均衡器 Web 服务器.应用服务器等多个后端服务 其中,Web 服务器和应用服务器 常常被人视为一个整体 但其实从工作原理上来说 两者还是有一定区 ...

  6. 小程序的图片上传wx.uploadFile及后台PHP接收文件并存储到服务器

    前台代码wxml: <button bindtap='chooseImg'>选择图片</button>//图片选择 <view><image src='{{i ...

  7. android上传二进制流到服务器,android – 通过ADB shell传输二进制数据(即使...

    参见英文答案 > Read binary stdout data from adb shell?????????????????????????????????????16个 我一直在尝试使用类 ...

  8. goahead(嵌入式Web服务器)之文件传输篇

    goahead文件上传原理: 使用html form即表单提交文件上传请求,web服务器核心处理接收客户端Post过来的文件数据(注意post的是二进制数据),最后,web服务器把接收到文件数据以二进 ...

  9. iOS Android 上传代码库+持续集成+单元测试

    背景 本文将介绍如何把iOS & Android项目分别上传到CocoaPods和Jitpack,并用Travis CI做持续集成,codecov做代码单元测试覆盖率的报告展示. 上传代码 创 ...

  10. 向服务器传输文件方法,向服务器远程传输文件

    向服务器远程传输文件 内容精选 换一换 在本地主机和Windows云服务器上分别安装QQ.exe等工具进行数据传输.使用远程桌面连接mstsc方式进行数据传输.该方式不支持断点续传,可能存在传输中断的 ...

最新文章

  1. LeetCode 10. Regular Expression Matching python特性、动态规划、递归
  2. CSS、JavaScript、PHP和Python编程合二为一
  3. 《程序员做饭指南》霸榜 GitHub!不仅有量筒、烧杯,还用上了数学公式?
  4. CowNew开源团队4月14日聚会
  5. GraphPad Prism 教程 :标准差与平均值的标准误差有什么区别
  6. java导出excel并压缩
  7. 任务调度(三)——Timer的替代品ScheduledExecutorService简介
  8. java io 读取配置文件_(转)Java 读写Properties配置文件
  9. DDM:剪贴板处理处罚及截取屏幕
  10. SVN安装和使用详细教程
  11. 分子动力学模拟之周期性边界处理
  12. 【ROOT from CERN】——TCanvas绘制画布
  13. html实现文件的下载
  14. android实现全国公祭日灰白模式
  15. VMware vSphere ESXI 6.7 U3最新版本封装网卡驱动补丁
  16. 怎样设计才能让文字排版更好看(一)
  17. (67)TCL脚本命令【incr(一个参数)】
  18. 学习笔记(1):零基础掌握 Python 入门到实战-用Python操作SQLite数据库
  19. springcloudAlibaba设置allow-bean-definition-overriding=true不生效问题解决
  20. 466A. Cheap Travel

热门文章

  1. python matlibplot将不同数据的柱状图和折线图画在同一张图中
  2. 【企业架构】企业架构(EA)简介
  3. 彻底讲透FCN语义分割开山之作Fully Convolutional Networks
  4. 微擎mc.mod.php,微擎获取用户头像失败的问题如何处理
  5. 小米手机 安装AndroidAuto后连接车机,提示android auto出现错误 通信错误16
  6. ffmpeg 视频编码一(精简版)
  7. 语音转文字的测试用例aqq端
  8. 无法打开文件“python37_d.lib”和无法解析的外部符号 __imp__Py_NegativeRefcount问题记录
  9. 我的OpenCV学习笔记(11):启动摄像头
  10. 【AD】如何在PCB板子上挖洞