1......................创建上传文件对象类
package fileUpLoad;
import javax.activation.DataHandler;
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;
}
}
2.........................创建接口类
package fileUpLoad;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService
@javax.xml.ws.soap.MTOM
public interface ResumeUploadService {
@WebMethod
public void uploadResume(@WebParam(name = "resume") Resume resume);
}
3.........................服务端实现类
package fileUpLoad;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.activation.DataHandler;
public class ResumeUploadServiceImpl implements ResumeUploadService {
public void uploadResume(Resume resume) {
System.out.println("1");
DataHandler handler = resume.getResume();
try {
System.out.println("2");
InputStream is = handler.getInputStream();
OutputStream os = new FileOutputStream(new File("G:\\"
+ resume.getCandidateName() +"."+
resume.getResumeFileType()));
byte[] b = new byte[100000];
int bytesRead = 0;
while ((bytesRead = is.read(b)) != -1) {
os.write(b, 0, bytesRead);
}
System.out.println("3");
os.flush();
os.close();
is.close();
} catch (IOException e){
e.printStackTrace();
}
}
}
4...........................................发布接口
<!-- 实现文件上传接口 -->
<jaxws:server id="ResumeUpload" serviceClass="fileUpLoad.ResumeUploadService"
address="/ResumeUpload">
<!-- 添加实现类 -->
<jaxws:serviceBean>
<ref bean="ResumeUploadServiceImpl" />
</jaxws:serviceBean>
<!-- 添加协议 使用MTOM附件-->
<jaxws:properties>
<entry key="mtom-enabled" value="true" />
</jaxws:properties>
</jaxws:server>
5...................................客户端上传类
package fileUpLoad;
import java.io.File;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
public class UpLoad {
public static void main(String[] args) throws Exception {
String url = "http://localhost:8080/SpringCXF/services/ResumeUpload?wsdl";
Resume resume = new Resume();
resume.setCandidateName("ss");
resume.setResumeFileType("jpg");
DataSource source = new FileDataSource(new File("d:\\中国.jpg"));
resume.setResume(new DataHandler(source));
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(ResumeUploadService.class);
factory.setAddress(url);
ResumeUploadService client = (ResumeUploadService) factory.create();
try {
client.uploadResume(resume);
} catch (Exception e) {
System.out.println("sa");
}
System.out.println("success");
}
}
如果出现缺少架包的问题,请参考 http://blog.csdn.net/wangnetkang/article/details/7818399