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来提 ... 
随机推荐
- SpringBoot 密码MD5加密
			public class PasswordEncrypt { public static String encodeByMd5(String string) throws NoSuchAlgorith ... 
- ggplot2 specific command
			# By default, the same scales are used for all panels. You can allow # scales to vary across the pan ... 
- hbase learning
			万万没想到,促使我填坑的居然是学习HBase,之前听分享的时候知道它是一个kv型的数据库就没有多了解,现在才开始学习. hbase和bigtable很像,入门看起来也不太难#flag #下面是对于我看 ... 
- 运行jar_测试代码
			1.Eclipse 将 工程 导出成 jar Eclipse --> Export... --> 界面中树状图形中选择" Java下的'JAR file' "(不知道这 ... 
- angular2.x  多选框事件
			angular2.x - 4.x 的多选框事件 ng2 -- ng4 反正都是用es6 都统称为2.x吧. 下面贴代码 html界面 <div class="row"> ... 
- NSNumber 与NSValue
			NSNumber与NSValue关系与作用 .由于集合里只能存放对象,不可以存放基本数据类型,所以我们有时候需要讲一些对象比如基本数据类型,结构体等存到NSDictionary NSArray中,我们 ... 
- GBDT 总结文档
			在做阿里的o2o优惠券预测的时候学习了GBDT.听闻GBDT的威力,自然要学习学习. 接下来从以下几个方面记录下我对于GBDT的理解. GBDT的用途,优势 GBDT的结构和算法流程 GBDT如何训练 ... 
- mysql 如果数据不存在,则插入新数据,否则更新 的实现方法
			CREATE TABLE `table_test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `my_key` int(11) NOT NULL DEFAULT ... 
- Ceph Monitor的数据管理
			转自:https://www.ustack.com/blog/ceph-monitor-2/ Monitor管理了Ceph的状态信息,维护着Ceph中各个成员的关系,这些信息都是存放在leveldb中 ... 
- 如何批量更改linux文件的内容
			在工作当中,我们往往需要修改某个文件夹下面所有文件的内容,例如把里面的日期统一替换成新的日期,或者把某一串字符替换成另外一串字符,这时我们就可以使用sed命令: sed -i "s/olds ... 
