android 上传文件用php程序在服务端接受(一)

php服务端接受程序。。file_up.php。

<?php
/*    require_once(‘lib/session_config.php‘);
    require_once(‘lib/flydc.php‘);
    require_once(‘lib/common.php‘);
    require_once(‘config.php‘); */
    //header("content-Type:text/html;charset=UTF-8");

//    var_dump($_SERVER[‘HTTP_RANGE‘]);
    $fileUp  = new FileUp();
    $fileUp->uploadFile();
    exit;
    class FileUp
    {
        public $isHaveFid = false;
        public $target_path = "../files/";  //文件存取的路径

        public $uid,$fid,$ext,$alllength,$poss,$finish;
        function initData()
        {
            $this->fid = $_GET[‘fid‘];
            $this->ext = $_GET[‘ext‘];
            $this->poss = $_GET[‘pos‘];
        }

        function uploadFile()
        {
            $this->initData();

            $absoluteName  = "";//$this->getdir()."/".basename($_FILES[‘uploadedfile‘][‘name‘]);

            $handleRead = null;
            $fid = "";

            $handleWrite = null;
            if(!empty($_FILES[‘uploadedfile‘][‘tmp_name‘]))
            {
                $handleRead = fopen($_FILES[‘uploadedfile‘][‘tmp_name‘],‘rb‘);
                //$extend = pathinfo( $_FILES[$name][‘name‘] );   //$extend[‘extension‘]  扩展

                if(!empty($this->fid))  //fid存在是接着上次上传
                    $fid = $this->fid;
                else //fid不存在,做为第一次上传,生成一个fid
                    $fid = time().‘_‘.mt_rand(1,22222).".".$this->ext;

                $absoluteName  = $this->getdir()."/".$fid;
                $handleWrite = fopen($absoluteName,‘a‘);
                $buffer = ‘‘;
                while (!feof($handleRead))
                 {
                    $buffer = fread($handleRead, 1024*128);
                    if(strlen($buffer)<=0)
                        break;
                    fwrite($handleWrite,$buffer);

                }

                fclose($handleWrite);
                fclose($handleRead);

                echo $fid;  //返回fid  给服务器
                $this->saveLog("$fid 上传成功");
            }else
            {
                echo "fail";
                $this->saveLog(" 上传失败");
            }
        }

        function saveLog($content)
        {
            $logpath = $this->getdir()."/".date("Y-m-d",time())."_log.txt";
            $result = fopen($logpath,‘a‘);
            fwrite($result,date("Y-m-d H:i:s",time())." ========== ".$content."\r\n");
            fclose($result);

        }

        function getdir()
        {
            $day_dir = $this->target_path.date("Ymd",time());
            if(!is_dir($day_dir))
            {
                mkdir($day_dir,0777,true);
            }
            return $day_dir;
        }

    }

?>

androiud 客户端java 代码

public void doUpload()
    {
        //要上传的文件
        String pathString = FileManager.getParentDirectory()+"media/video_3_20141222145045024.mp4"; //video_3_20141222145045024.mp4  video_3_20141224153340976.mp4
        //上传的地址
        String acceptUrl = "http://10.0.10.3/flyguard/mobileapi/file_up.php?fid="+this.fidString+"&pos=&ext=mp4";

        RandomAccessFile raf =  null;
        try
        {
            raf = new RandomAccessFile(pathString, "r");

            long alllength=raf.length();
            raf.seek(0);
            byte[] buffer = new byte[128*1024];//128k
            int count = 0;
            while ((count = raf.read(buffer)) != -1)
            {
//                count = raf.read(buffer);
                String result = uploadFil(acceptUrl,buffer);
                System.out.println("MediaActivity doUpload return:"+result+ " count:"+count);
                break;
            }

        } catch (Exception e)
        {
            e.printStackTrace();
        }finally{

                try
                {
                    if(raf!=null)
                        raf.close();
                } catch (IOException e)
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
        }

    }

public String uploadFil(String acceptUrl,byte[] data)
    {

        String end = "\r\n";
        String twoHyphens = "--";
        String boundary = "******";
        try
        {
            URL url = new URL(acceptUrl);
            HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
            // 设置每次传输的流大小,可以有效防止手机因为内存不足崩溃
            // 此方法用于在预先不知道内容长度时启用没有进行内部缓冲的 HTTP 请求正文的流。
            httpURLConnection.setChunkedStreamingMode(data.length);// 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);//application/octet-stream   multipart/form-data
            DataOutputStream dos  = new DataOutputStream(httpURLConnection.getOutputStream());
            dos.writeBytes(twoHyphens + boundary + end);
            dos.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\"; filename=\""
           // +pathString.substring(pathString.lastIndexOf("/")+1)
            +"myfilename"
            +"\""
            +end);
            dos.writeBytes(end);

            dos.write(data,0,data.length);

            dos.writeBytes(end);
            dos.writeBytes(twoHyphens + boundary + twoHyphens + end);
            dos.flush();

            String reponse = "";
            if(httpURLConnection.getResponseCode() == 200 )
            {
                InputStream is = httpURLConnection.getInputStream();
                InputStreamReader isr = new InputStreamReader(is,"utf-8");
                BufferedReader br = new BufferedReader(isr);
                while (null !=br.readLine())
                {
                    reponse +=br.readLine(); 

                }
                is.close();
            }

            System.out.println("MediaActivity uploadFil Reponse:"+reponse);
            dos.close();
            return reponse;

        } catch (Exception e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("MediaActivity uploadFil Exception:"+e.getMessage());
        }

        return "";

    }
时间: 2024-10-09 08:27:21

android 上传文件用php程序在服务端接受(一)的相关文章

android 上传文件&quot;Content-Type&quot;,为&quot;application/octet-stream&quot; 用php程序在服务端用$GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;]接受(二)

服务端php程序file_up.php function uploadFileBinary() { $this->initData(); $absoluteName = ""; $fid = ""; $handleWrite = null; if(!empty($GLOBALS['HTTP_RAW_POST_DATA']) && strlen($GLOBALS['HTTP_RAW_POST_DATA'])>0) { if(!empty($

Android上传文件之FTP

android客户端实现FTP文件(包括图片)上传应该没什么难度.写下来就了为了记录一下,望能帮到新手. 需要用到 commons-net-3.0.1.jar,后面附上jar包. 直接上代码: /**  * 通过ftp上传文件  * @param url ftp服务器地址 如: 192.168.1.110  * @param port 端口如 : 21  * @param username  登录名  * @param password   密码  * @param remotePath  上到

【经验记录】Android上传文件到服务器

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

android 上传文件

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

Android上传文件到服务器(转)

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

android上传文件到wamp服务器

1.php server(wamp)部分 建立unload.php页面代码如下 <?php move_uploaded_file($_FILES["file1"]["tmp_name"], "upload/" . $_FILES["file1"]["name"]); echo "存储在: " . "upload/" . $_FILES["file1&q

android 上传文件到服务器

Android客户端 package com.example.testandroid;   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.app.Alert

Android上传文件至服务器(转)

本实例实现每隔5秒上传一次,通过服务器端获取手机上传过来的文件信息并做相应处理:采用Android+Struts2技术. 一.Android端实现文件上传 1).新建一个Android项目命名为androidUpload,目录结构如下: 2).新建FormFile类,用来封装文件信息 package com.ljq.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExce

android 上传文件(表单),表单填写格式分析

原文地址:http://blog.sina.com.cn/s/blog_68494364010116gk.html 在Android的客户端编程中(特别是SNS 类型的客户端),经常需要实现注册功能Activity,要用户输入用户名,密码,邮箱,照片后注册.但这时就有一个问题,在HTML中用form表单就 能实现如上的注册表单,需要的信息会自动封装为完整的HTTP协议,但在Android中如何把这些参数和需要上传的文件封装为HTTP协议呢? 我们可以先做个试验,看一下form表单到底封装了什么样