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


    服务端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($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');
                        
                    fwrite($handleWrite,$GLOBALS['HTTP_RAW_POST_DATA']);
                    
                    fclose($handleWrite);
                    
                    echo $fid;  //返回fid  给服务器
                    $this->saveLog("$fid 上传成功");
                }else
                {
                    echo "fail";
                    $this->saveLog(" 上传失败");
                }
            }

    客户端java 代码 

    private String fidString = "test01.mp4";
        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;
                    
                    
                    String result = PostFileData(acceptUrl,buffer);
                    System.out.println("MediaActivity doUpload return:"+result+ " count:"+count);
                    
                }
                
               
            } catch (Exception e)
            {
                e.printStackTrace();
            }finally{
                
                    try
                    {
                        if(raf!=null)
                            raf.close();
                    } catch (IOException e)
                    {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
            }
            
            
        }
        
        
        /*
         * 提交 的url   Url
         * 上传 数据             data
         * */
        public String PostFileData(String Url,byte[] data) 
        {
          try
            {     
                HttpURLConnection conn = (HttpURLConnection) new URL(Url).openConnection();
                conn.setConnectTimeout(20 * 1000);
                conn.setRequestMethod("POST");
                conn.setDoOutput(true);// 允许对外输出数据
                conn.setRequestProperty("Content-Type", "application/octet-stream");
                conn.setRequestProperty("Content-Length", String.valueOf(data.length));
                OutputStream outStream = conn.getOutputStream();
                outStream.write(data);
                
                String Response="";
                if (conn.getResponseCode() == 200)
                {
                    BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                    String line;
                    while ((line = reader.readLine()) != null)
                     {
                        Response += line;
                     }
                }
                
                return Response;
            }
          catch (Exception e)
            {
                Log.e("PostFileData", e.getMessage());
                FileManager.saveError("PostFileData", e);
            }
          finally
            { 
                return "";
            }
        }
  • 相关阅读:
    Python 面向对象补充
    Python 多态
    Web_php_unserialize-攻防世界XCTF
    sqli-labs之Page-4
    sqli-labs之Page-3
    sqli-labs之Page-1
    DVWA-反射型XSS
    DVWA-File Upload
    DVWA-File Inclusion
    DVWA-CSRF
  • 原文地址:https://www.cnblogs.com/longhs/p/4184717.html
Copyright © 2020-2023  润新知