retful上传文件php的实现
项目中要使用restful上传文件到服务器,一直不能成功,后生成相关串后在postman中上传成功,利用这个工具生成php curl的代码,后逐步比对产生以下代码。
/**
     * 上传文件
     * @param unknown $filename
     */
    function fileUpload($filename,$type)
    {
        $serviceName='imageup';
        $contents = file_get_contents($filename);
        //content boundary
        $boundary   = md5(time());
        $postStr  = "";
        $postStr .="-----".$boundary."\r\n";
        $postStr .="Content-Disposition: form-data; name=\"file\"; filename=\"".$filename."\"\r\n";
        $postStr .="Content-Type: jpg\r\n\r\n";      
        $postStr .=$contents."\r\n";
        $postStr .="-----".$boundary."--";
        
        $timestamp=$this->getMillisecond();
        $signstr=$this->sign('', $timestamp, $this->prikey);
        $post_data=array("v"=>$this->ver,
            "ts"=>$timestamp,
            "sign"=>$signstr,
            "user"=>$this->userSn
        );
        $o = "";
        foreach ( $post_data as $k => $v )
        {
            $o.= "$k=" . urlencode( $v ). "&" ;
        }
        $post_data = substr($o,0,-1);
        $timeout = 30;       
        $postUrl = $this->url_province.$serviceName."/".$type."/" .'?' . $post_data;
        
        $ch = curl_init(); 
        $boundary = md5(time());
        curl_setopt_array($ch, array(
            CURLOPT_URL => $postUrl,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 300,
            CURLOPT_CUSTOMREQUEST => "POST",
            CURLOPT_POSTFIELDS => $postStr,
            CURLOPT_HTTPHEADER => array(
                "cache-control: no-cache",
                "content-type: multipart/form-data; boundary=---".$boundary,
            ),
        ));
        $result = curl_exec($ch);
        curl_close($ch);
  
        return $result;               
    }
$boundary 的格式不能改变,“-----”、“\r\n"上面程序已经过测试
retful上传文件php的实现的更多相关文章
- IE8/9 JQuery.Ajax 上传文件无效
		IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ... 
- 三种上传文件不刷新页面的方法讨论:iframe/FormData/FileReader
		发请求有两种方式,一种是用ajax,另一种是用form提交,默认的form提交如果不做处理的话,会使页面重定向.以一个简单的demo做说明: html如下所示,请求的路径action为"up ... 
- asp.net mvc 上传文件
		转至:http://www.cnblogs.com/fonour/p/ajaxFileUpload.html 0.下载 http://files.cnblogs.com/files/fonour/aj ... 
- app端上传文件至服务器后台,web端上传文件存储到服务器
		1.android前端发送服务器请求 在spring-mvc.xml 将过滤屏蔽(如果不屏蔽 ,文件流为空) <!-- <bean id="multipartResolver&q ... 
- .net FTP上传文件
		FTP上传文件代码实现: private void UploadFileByWebClient() { WebClient webClient = new WebClient(); webClient ... 
- 通过cmd完成FTP上传文件操作
		一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ... 
- 前端之web上传文件的方式
		前端之web上传文件的方式 本节内容 web上传文件方式介绍 form上传文件 原生js实现ajax上传文件 jquery实现ajax上传文件 form+iframe构造请求上传文件 1. web上传 ... 
- Django session cookie  上传文件、详解
		session 在这里先说session 配置URL from django.conf.urls import patterns, include, url from django.contrib i ... 
- 4 django系列之HTML通过form标签来同时提交表单内容与上传文件
		preface 我们知道提交表单有2种方式,一种直接通过submit页面刷新方法来提交,另一种通过ajax异步局部刷新的方法提交,上回我们说了通过ajax来提交文件到后台,现在说说通过submit来提 ... 
随机推荐
- [BZOJ2717]迷路的兔子[构造]
			构造题…当然需要推(看)一推(看)规(题)律(解)啦... 其实是在Discuss那个CA的一句话题解里面翻到这个东西的... 用奇怪的姿势枚举一下...先贴代码 #include<bits/s ... 
- dedecms 织梦利用arcpagelist标签实现首页arclist分页
			DedeCMS首页arclist分页可以利用arcpagelist标签来实现,这里说一下调用方法:首先必须在首页的<head></head>标签里面引入如下js代码: < ... 
- Windows7中pagefil.sys和Hiberfil.sys文件删除与转移
			第一步.在开始的功能表的搜索栏里输入 cmd,然后在搜索结果中的 cmd 按下右键,点选[以系统管理员身分运行] 第二步.在命令提示符窗口里输入下面命令然后按下Enter: powercfg –h o ... 
- windchill系统——eclipse与服务器同步数据操作
			步骤如下 
- 编写一个程序,将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文件中,a.txt 文件中的单词用回车符分隔,b.txt 文件中用回车或空格进行分隔。
			package IO; import java.io.*; public class test { public void connectWords(File file1, File file2, F ... 
- JNI_Z_10_Java的数组
			在Java中数组分为两种: (1).基本类型数组 (2).对象类型(Object[])的数组 (数组中存放的是指向Java对象中的引用) 一个能通用于两种不同类型数组的函数: GetArrayLeng ... 
- Git的add、commit、push命令
			简单的代码提交流程1.git status 查看工作区代码相对于暂存区的差别2.git add . 将当前目录下修改的所有代码从工作区添加到暂存区 . 代表当前目录3.git commit -m ‘注 ... 
- C++(十七) — 宏代码、内联函数
			1.C++ 表达式返回值 返回引用:当函数返回引用类型时,没有复制返回值.相反,返回的是对象本身.(与之对应的C语言中,返回的是变量的值) C++中,表达式返回的是变量本身(也就是变量对应的地址). ... 
- pxcook-高效易用的自动标注工具, 生成前端代码
			1.pxcook.sketch(http://www.fancynode.com.cn/pxcook) 
- 八大排序算法的java实现
			有时间再贴算法分析图 JDK7的Collections.sort()的算法是TimSort, 适应性的归并排序, 比较晦涩难懂, 这里没有实现 public class mySort { // 冒泡排 ... 
