Heim > Artikel > Backend-Entwicklung > php如何调用WebService上传文件
由于我们公司要对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();
搜索 sock文件上传
搜索 sock文件上传
看在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;
}
一把辛酸泪,太难了,终于搞定了