php如何调用WebService上传文件

php中文网
发布: 2016-06-20 12:36:29
原创
1830人浏览过

由于我们公司要对oa进行二次开发,oa使用java开发的!现在里面有个接口是上传文件的接口,范例给的是c#的,我又不会c#,php也是新手没玩过接口上传文件,不知道如何动手!
下面附文档说明,看有没大神或版主帮我转成php的语言让我观摩学习下

uploadservice 文件上传服务。
请求路径:/seeyon/uploadservice.do?method= processuploadservice

参数:
token    string   登录验证后获取的身份令牌。   我可以得到
senderloginname  string  发起者登录名         我可以得到

返回值:string
成功则返回生成的附件id,如果多个文件上传则以"|"符号分割返回

c#范例:

url preurl = null;      urlconnection uc = null;      preurl = new url("http://xxx.xxx.xxx.xxx/seeyon/uploadservice.do?      method = processuploadservice"          +"&senderloginname="+"zy"          +"&token="+"997a7cdc-2399-47e8-991e-96c859cccc7f");      string s = parameters.tostring();      uc = preurl.openconnection();      httpurlconnection hc = (httpurlconnection) uc;      hc.setdooutput(true);      hc.setusecaches(false);      hc.setrequestproperty("contenttype", "charset=utf-8");      hc.setrequestmethod("post");      bufferedinputstream  input=new bufferedinputstream(new fileinputstream("c:/ldap集成设计文档.doc"));      string boundary = "---------------------------7d4a6d158c9"; // 分隔符      string filename="ldap集成设计文档.doc";      stringbuffer sb = new stringbuffer();      sb.append("--");      sb.append(boundary);      sb.append("\r\n");      sb.append("content-disposition: form-data; \r\n name=\"1\"; filename=\""+filename+"\"\r\n");      sb.append("content-type: application/msword\r\n\r\n");      hc.setrequestproperty("content-type",          "multipart/form-data;boundary=" + "---------------------------7d4a6d158c9");      byte[] end_data = ("\r\n--" + boundary + "--\r\n").getbytes();      dataoutputstream dos = new dataoutputstream(hc.getoutputstream());      dos.write(sb.tostring().getbytes("utf-8"));      int cc=0;      while((cc=input.read())!=-1)      {          dos.write(cc);      }      dos.write(end_data);      dos.flush();      dos.close();      fileoutputstream file = new fileoutputstream("c:/test.txt");      inputstream is = hc.getinputstream();      int ch;      while ((ch = is.read()) != -1) {           file.write(ch);      }      if (is != null)      is.close();
登录后复制

易森网络企业版
易森网络企业版

如果您是新用户,请直接将本程序的所有文件上传在任一文件夹下,Rewrite 目录下放置了伪静态规则和筛选器,可将规则添加进IIS,即可正常使用,不用进行任何设置;(可修改图片等)默认的管理员用户名、密码和验证码都是:yeesen系统默认关闭,请上传后登陆后台点击“核心管理”里操作如下:进入“配置管理”中的&ld

易森网络企业版 0
查看详情 易森网络企业版


回复讨论(解决方案)

搜索 sock文件上传

搜索 sock文件上传


有的人说用curl跟这个有区别吗?

看在100分的份上,求好心人给给代码,不要复制网上的

小弟才接触PHP不到4个月

从你给出的 C# 代码上看,他和 php 的 sock 文件上传代码是基本一致的
具体的实现有待推敲。

如果服务方遵守标准的 http 协议,用 curl 当然更简单

由于无法得到服务方的反馈,调试是无法进行的

function uploadFileToOA($file=array(),$senderLoginName)
{
    $client=new \SoapClient("http://XXX.XXX.XXX.XXX/xxx?wsdl");
    $param=array("userName"=>"用户名","password"=>"密码");
    $token = $client->__soapCall('authenticate',array($param));
    $PostUrl = "http://XXX.XXX.XXX.XXX/XXXLoginName."&token=".$token->return->id;
    $fields = array("file"=>$file);
    $curl = curl_init($PostUrl);
    curl_setopt($curl, CURLOPT_POST,true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $fields);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
    $result = curl_exec($curl);
    curl_close($curl);
    return $result;
}
一把辛酸泪,太难了,终于搞定了

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号