webservice接口实现文件上传
直接上代码:
服务提供方:
接口:
public String WebfileUploud(@WebParam(name = "resume")Resume resume);
实体:
package com.hb.kfcenter.kfFlow.models;
import javax.activation.DataHandler;
/**
* WebService进行文件上传 : 上传文件对象类
* @author admin1
*/
public class Resume {
private String candidateName;
private String resumeFileType;
private DataHandler resume;
public String getCandidateName() {
return candidateName;
}
public void setCandidateName(String candidateName) {
this.candidateName = candidateName;
}
public String getResumeFileType() {
return resumeFileType;
}
public void setResumeFileType(String resumeFileType) {
this.resumeFileType = resumeFileType;
}
public DataHandler getResume() {
return resume;
}
public void setResume(DataHandler resume) {
this.resume = resume;
}
}
实现:
// 文件上传到服务器
public static String WebfileUploud(Resume resume) {
String saveFilePath = "图片路径"
DataHandler handler = resume.getResume();
String msg = "";
OutputStream os = null;
InputStream is = null;
try {
is = handler.getInputStream();
File saveFile = new File(saveFilePath);
if (!saveFile.getParentFile().exists()) {
saveFile.getParentFile().mkdirs();
}
os = new FileOutputStream(saveFile);
byte[] b = new byte[100000];
int bytesRead = 0;
while ((bytesRead = is.read(b)) != -1) {
os.write(b, 0, bytesRead);
}
os.flush();
os.close();
is.close();
} catch (Exception e) {
msg = e.getMessage();
e.printStackTrace();
}
return msg;
}
客户端:
package com.hb.kfcenter.kfFlow.ws;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
public class Test0722 {
public static void main(String[] args) throws ServiceException {
Resume resume = new Resume();
resume.setCandidateName("你好");
resume.setResumeFileType("png");
byte[] bytes = File2byte(new File("C:/Users/admin1/Desktop/pdf/111.png"));
resume.setResume(bytes);
ExternalWsLocator locater = new ExternalWsLocator();
// 测试地址
String url = "http://localhost:8080/kfDeploy/csp/services/sr/c_hbdx_ci_serRequest";
locater.setExternalWebserviceImplPortEndpointAddress(url);
ExternalWebservice ews = locater.getExternalWebserviceImplPort();
String webfileUploud = null;
try {
webfileUploud = ews.createProblemProcessWithFile(getXml(), resume);
} catch (RemoteException e) {
e.printStackTrace();
}
System.out.println("成功-------" + webfileUploud);
}
public static byte[] File2byte(File tradeFile){
byte[] buffer = null;
try
{
FileInputStream fis = new FileInputStream(tradeFile);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] b = new byte[1024];
int n;
while ((n = fis.read(b)) != -1)
{
bos.write(b, 0, n);
}
fis.close();
bos.close();
buffer = bos.toByteArray();
}catch (FileNotFoundException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
return buffer;
}
public static String getXml(){
StringBuilder xml1 = new StringBuilder();
xml1.append("<?xml version='1.0' encoding='utf-8'?>" );
xml1.append("<confirmProcess>" );
xml1.append("<nbrType>tel</nbrType>" );
xml1.append("<srTypeId>070009002</srTypeId>" );
xml1.append("<subsName>何红丽</subsName>" );
String nbr = "17771222375";
xml1.append("<subsNumber>"+nbr+"</subsNumber>" );
xml1.append("<callerNo>17771222361</callerNo>" );
xml1.append("<contactPerson></contactPerson>" );
xml1.append("<contactMode></contactMode>" );
xml1.append("<contactPhone1>17771222361</contactPhone1>" );
xml1.append("<contactPhone2></contactPhone2>" );
xml1.append("<email></email>" );
xml1.append("<address></address>" );
xml1.append("<subsLevel>0星</subsLevel>" );
xml1.append("<subsBrand></subsBrand>" );
xml1.append("<acceptMode></acceptMode>" );
xml1.append("<acceptStaffNo>3601</acceptStaffNo>" );
xml1.append("<serviceTitle></serviceTitle>" );
xml1.append("<serviceContent>test</serviceContent>" );
xml1.append("<acceptCity></acceptCity>" );
xml1.append("<subsCity>1006</subsCity>" );
xml1.append("<serviceCity></serviceCity>" );
xml1.append("<urgentId></urgentId>" );
xml1.append("<contactChannel>51</contactChannel>" );
xml1.append("<flowId></flowId>" );
xml1.append("<contactId>111111111111111</contactId>" );
xml1.append("<prodId></prodId>" );
xml1.append("<servId></servId>" );
xml1.append("<remark01></remark01>" );
xml1.append("<remark02></remark02>" );
xml1.append("<remark03></remark03>" );
xml1.append("<remark04></remark04>" );
xml1.append("<remark05></remark05>" );
xml1.append("<remark06></remark06>" );
xml1.append("<remark07></remark07>" );
xml1.append("<remark08></remark08>" );
xml1.append("<remark09></remark09>" );
xml1.append("<remark10></remark10>" );
xml1.append("</confirmProcess>" );
return xml1.toString();
}
}
以上文件 删减部分 所有需要自己修改使用
注意一点 客户端调用,是2进制
byte[] bytes = File2byte(new File(“C:/Users/admin1/Desktop/pdf/111.png”));
resume.setResume(bytes);