Android上传文件到Web服务器 PHP接收文件

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; 

 @Override
 public 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()
  {
   @Override
   public 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]; // 8k
   int 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" />

运行结果:

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

(0)

相关推荐

  • Android使用第三方服务器Bmob实现发送短信验证码

    调用Bmob第三方服务器实现短信验证的功能,大致思路如下: 随机产生6位数字,然后调用Bmob的请求短发函数发送者六位数到服务器,然后服务器给指定手机发送这6位验证码,然后感觉用户输入的数字进行判断,如果输入的和发送的相等,则验证成功. 第一步.请求验证码: SimpleDateFormat format =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String sendTime = format.format(new Date());

  • 基于Android 错误信息捕获发送至服务器的详解

    程序员最头疼的事情就是bug和debug.这次debug长达20天,搞的我心力交瘁.累,因为Android兼容性,不同手机会有不同的bug出来,而且很难复现,所以就上网找了下类似保存错误log到文件再上传到服务器,现把源码也共享出来.上传至服务器的代码我没加.相信大家都有现成的代码了. 先讲下原理,跟JavaEE的自定义异常捕获一样,将错误一直向上抛,然后在最上层统一处理.这里就可以获得Exception Message,进行保存操作异常捕获类如下: 复制代码 代码如下: /**  * @aut

  • Android编程向服务器发送请求时出现中文乱码问题的解决方法

    本文实例讲述了Android编程向服务器发送请求时出现中文乱码问题的解决方法.分享给大家供大家参考,具体如下: 我们在andorid项目中通过get方式向服务器发送请求,其中url参数带有中文,将会产生乱码,乱码产生的原因有两种: 1. 在提交参数时,没有对中文参数进行URL编码 2. Tomcat服务器默认采用的是IOS8859-1编码(不支持中文)得到参数值 解决: 1. 进入android项目,在其中要提交参数的时候,对参数的值进行编码: 复制代码 代码如下: URLEncoder.enc

  • Android发送xml数据给服务器的方法

    本文实例讲述了Android发送xml数据给服务器的方法.分享给大家供大家参考.具体如下: 一.发送xml数据: public static void main(String[] args) throws Exception { String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><videos><video><title>中国</title&

  • Android使用httpPost向服务器发送请求的方法

    本文实例讲述了Android使用httpPost向服务器发送请求的方法.分享给大家供大家参考,具体如下: import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http

  • Android向node.js编写的服务器发送数据并接收请求

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 首先时node.js服务器端代码 var http = require("http"); var fs = require("fs"); var queryString = require('querystring'); var url = require('url'); var util = require('util'); http.createServer(function

  • Android上传文件到Web服务器 PHP接收文件

    Android上传文件到服务器,通常采用构造http协议的方法,模拟网页POST方法传输文件,服务器端可以采用JavaServlet或者PHP来接收要传输的文件.使用JavaServlet来接收文件的方法比较常见,在这里给大家介绍一个简单的服务器端使用PHP语言来接收文件的例子. 服务器端代码比较简单,接收传输过来的文件: <?php $target_path = "./upload/";//接收文件目录 $target_path = $target_path . basenam

  • android 上传文件到服务器代码实例

    android对于上传文件,还是很简单的,和java里面的上传都是一样的,基本上都是熟悉操作输出流和输入流!还有一个特别重要的就是需要一些content-type这些参数的配置!  如果这些都弄好了,上传就很简单了!   下面是我写的一个上传的工具类: 复制代码 代码如下: package com.spring.sky.image.upload.network; import java.io.DataOutputStream;import java.io.File;import java.io.

  • Android上传文件到服务端并显示进度条

    最近在做上传文件的服务,简单看了网上的教程.结合实践共享出代码. 由于网上的大多数没有服务端的代码,这可不行呀,没服务端怎么调试呢. Ok,先上代码. Android 上传比较简单,主要用到的是 HttpURLConnection 类,然后加一个进度条组件. private ProgressBar mPgBar; class UploadTask extends AsyncTask<Object,Integer,Void>{ private DataOutputStream outputStr

  • android 上传aar到私有maven服务器的示例

    搞这个东西也是花了蛮长时间,主要还是对gradle中的groovy语言不熟悉所导致的,写下来,以防下次再入坑- 在gradle中新建task 如果你需要将某个module打包成aar,并上传到maven上去,需要在这个module下面的build.gradle文件中添加如下代码: 其中代码: apply plugin: 'maven' 表示我们要应用的插件. MAVEN_LOCAL_PATH表示maven服务器地址,packaging表示需要打包的类型,groupId:artifactId:ve

  • java实现文件上传下载至ftp服务器

    以前做的一个项目,用到了文件上传下载至ftp服务器,现在对其进行一下复习,比较简单,一下就能看明白. 环境:首先,先安装ftp服务器,我是在win8本地用IIS配置的, 百度一下就可以找到安装文档. 1.在你的项目目录下建立ftp配置文件,目录如下图 01 ftpconfig.properties: ftpIp=10.73.222.29 ftpPort=21 ftpUser=WP ftpPwd=04143114wp ftpRemotePath=d://share 02 读取ftpconfig.p

  • FTP服务器详解之监控ftp服务器、上传文件到ftp服务器、ftp文件监控的方法

    现在FTP文件服务器的使用极为普遍,可以方便地将文件实时存储在FTP文件服务器上,那么如何搭建FTP文件服务器呢,以及如何监控FTP文件服务器文件访问操作日志情况呢?详细如下: 第1页:FTP服务器的作用 FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务.FTP服务器常常被用来进行文件共享和传输,是互联网领域必不可少的一环. FTP服务器的作用 FTP服务器是为了解决文件传输障碍问题而产生的.那么FT

  • 本地文件上传到七牛云服务器示例(七牛云存储)

    复制代码 代码如下: # _*_ coding: utf-8 _*_#---------------------------------------#   程序:把本地文件上传到七牛云服务器#   版本:0.1#   作者:liu jia#   日期:2014-01-07#   语言:Python 2.7#--------------------------------------- import qiniu.confimport sysimport os#登录后从#https://portal

  • Mac本地文件上传到CentOS云服务器方法

    Mac本地文件上传到CentOS中,可以使用scp指令可以完成 ContOS端安装openssh-clients 通过yum安装执行 yum install openssh-clients Mac端使用scp指令上传文件 打开终端,进入你要上传的文件目录下,使用scp指令上传文件 scp (你要上传的文件)root@(你的服务器域名或者IP):/(服务器存放路径) 总结 以上所述是小编给大家介绍的Mac本地文件上传到CentOS云服务器方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编

  • Spring MVC文件上传大小和类型限制以及超大文件上传bug问题

    在上一篇文章中,主要介绍了Spirng MVC环境下的正常情况下文件上传功能实现.在实际开发的时候,还会涉及到上传文件大小和类型的限制,接下来就会对Spirng MVC环境下文件上传大小和类型的限制进行介绍,还会讲解到文件上传大小tomcat服务器bug问题及解决方案. 一.文件上传大小限制 这里还是接着上篇文章先介绍Spring MVC下的文件上传大小限制,文件上传大小的限制在springmvc-config.xml中配置文件解析器CommonsMultipartResolver时即可配置,示

  • JavaWeb文件上传下载实例讲解(酷炫的文件上传技术)

    一.课程概述 在Web应用系统开发中,文件上传功能是非常常用的功能,今天来主要讲讲JavaWeb中的文件上传功能的相关技术实现,并且随着互联网技术的飞速发展,用户对网站的体验要求越来越高,在文件上传功能的技术上也出现许多创新点,例如异步上传文件,拖拽式上传,黏贴上传,上传进度监控,文件缩略图,大文件断点续传,大文件秒传等等. 本课程需要的基础知识: 了解基本的Http协议内容 基本IO流操作技术 Servlet基础知识 javascript/jQuery技术基础知识 二.文件上传的基础 对于文件

随机推荐