Axis2上传下载文件
Service:
package com.siven.axis2.service;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.FileOutputStream;
import javax.activation.DataHandler;
public class FileService
{
// 使用byte[]类型参数上传二进制文件
public boolean uploadWithByte(byte[] file, String filename)
{
FileOutputStream fos = null;
try
{
fos = new FileOutputStream("c:/temp/"+filename);
fos.write(file);
fos.close();
}
catch (Exception e)
{
return false;
}
finally
{
if (fos != null)
{
try
{
fos.close();
}
catch (Exception e)
{
}
}
}
return true;
}
private void writeInputStreamToFile(InputStream is, OutputStream os) throws Exception
{
int n = 0;
byte[] buffer = new byte[8192];
while ((n = is.read(buffer)) > 0)
{
os.write(buffer, 0, n);
}
}
// 使用DataHandler类型参数上传文件
public boolean uploadWithDataHandler(DataHandler file, String filename)
{
System.out.println("====================== start");
FileOutputStream fos = null;
try
{
fos = new FileOutputStream("c:/temp/"+filename);
// 可通过DataHandler类的getInputStream方法读取上传数据
writeInputStreamToFile(file.getInputStream(), fos);
fos.close();
}
catch (Exception e)
{
return false;
}
finally
{
if (fos != null)
{
try
{
fos.close();
}
catch (Exception e)
{
}
}
}
System.out.println("====================== end");
return true;
}
public byte[] downWithByte(String fileName) throws Exception
{
// 打开图像文件,确定图像文件的大小
String filePath = "c:/temp/"+fileName;
File file = new File(filePath);
java.io.FileInputStream fis = new java.io.FileInputStream(filePath);
// 创建保存要上传的图像文件内容的字节数组
byte[] buffer = new byte[(int) file.length()];
// 将图像文件的内容读取buffer数组中
int n = fis.read(buffer); //n为读入的字节数
System.out.println("文件长度:" + file.length());
fis.close();
return buffer;
}
}
===================================================================================================
RPC Client:
public static void invokeUploadWithByte() throws AxisFault
{
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference("http://localhost:8888/Axis2/services/fileService");
options.setTo(targetEPR);
DataHandler dh = new DataHandler(new FileDataSource("c:/1.png"));//要上传的文件路径
Object[] opAddEntryArgs = new Object[]{ dh,"a.png" };//上传到服务器的文件名
Class[] classes = new Class[]{ Boolean.class };
QName opAddEntry = new QName("http://service.axis2.siven.com","uploadWithByte");
System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs,classes)[0]);
}
public static void invokeUploadWithDataHandler() throws AxisFault
{
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference("http://localhost:8888/Axis2/services/fileService");
options.setTo(targetEPR);
DataHandler dh = new DataHandler(new FileDataSource("c:/1.png"));//要上传的文件路径
Object[] opAddEntryArgs = new Object[]{ dh,"fun.png" }; //上传到服务器的文件名
Class[] classes = new Class[]{ Boolean.class };
QName opAddEntry = new QName("http://service.axis2.siven.com","uploadWithDataHandler");
System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs,classes)[0]);
}
public static void invokeDownWithByte() throws AxisFault
{
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference("http://localhost:8888/Axis2/services/fileService");
options.setTo(targetEPR);
Object[] opAddEntryArgs = new Object[] {"a.png"};//要下载的文件名
Class[] classes = new Class[] {byte[].class};
QName opAddEntry = new QName("http://service.axis2.siven.com","downWithByte");
byte[] strArray = (byte[])serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0];
FileOutputStream fos = null;
try
{
// 将下载的图像保存在c:/temp/盘的down.png文件中
fos = new FileOutputStream("c:/temp/down.png");
// 开始写入图像文件的字节
fos.write(strArray);
fos.close();
}catch(Exception e){
e.printStackTrace();
}
System.out.println("OK");
}
Stub Client:
public static void fileServiceTest() throws RemoteException
{
FileServiceStub fss = new FileServiceStub();
DataHandler dh = new DataHandler(new FileDataSource(new File("c:/1.png")));//要上传的文件路径
FileServiceStub.UploadWithByte uwb = new FileServiceStub.UploadWithByte();
uwb.setFile(dh);
uwb.setFilename("ccc.png");//上传到服务器的文件名
FileServiceStub.UploadWithByteResponse res =fss.uploadWithByte(uwb);
System.out.println(res.get_return());
FileServiceStub.UploadWithDataHandler uwh = new FileServiceStub.UploadWithDataHandler();
uwh.setFile(dh);
uwh.setFilename("ddd.png");//上传到服务器的文件名
FileServiceStub.UploadWithDataHandlerResponse resh = fss.uploadWithDataHandler(uwh);
System.out.println(resh.get_return());
}
分享到:
相关推荐
标题中的"axis2-idea-plugin-1.7.9.zip_axis2_axis2-idea-plugin_idea导入axis2_"提到了几个关键元素,分别是"axis2"、"idea-plugin"和"idea导入axis2",这暗示了这个压缩包是用于在IntelliJ IDEA这款集成开发环境...
标题中的"axis2-eclipse-codegen-plugin-1.6.2.zip"和"axis2-eclipse-service-plugin-1.6.2.zip"是两个与Apache Axis2相关的Eclipse插件,用于简化Web服务的开发过程。Apache Axis2是Java平台上一个成熟的Web服务...
axis2c-bin-1.6.0-linux.tar.gz axis2c-bin-1.6.0-win32.zip axis2c-src-1.6.0.tar.gz axis2c-src-1.6.0.zip 加md5
标题中的"axis2-eclipse-codegen-plugin-1.6.2和axis2-eclipse-service-plugin-1.6.2"指的是两个与Apache Axis2相关的Eclipse插件:Axis2代码生成插件和Axis2服务插件,它们是版本1.6.2的。Apache Axis2是一个流行的...
`axis2-1.5.1-war.zip`是Axis2作为Web应用的WAR(Web Archive)文件形式,适用于直接部署到支持Servlet容器(如Tomcat、Jetty)中。它包含了Axis2框架的全部功能,并且可以与其它Web应用共存。WAR文件的结构与标准的...
共四个文件,都是最先版的,希望可以帮助大家。axis2-eclipse-service-archiver-wizard和axis2-eclipse-codegen-wizard和axis2-1.6.1-bin和axis2-1.6.1-war
标题中的"axis2-1.8.0apache-cxf-3.4.4.rar"是一个压缩包文件,其中包含了两个重要的开源项目:Apache Axis2版本1.8.0和Apache CXF版本3.4.4。这两个项目都是用于构建和部署Web服务的重要工具,主要应用于Java开发...
"axis2-idea-plugin-1.7.8" 是一个专为IntelliJ IDEA设计的插件,主要用于提升开发者在处理Axis2 Web服务时的效率和便利性。Axis2是Apache软件基金会开发的一个开放源代码Web服务框架,它提供了一种高效、灵活的方式...
axis2-1.6.2.zip, windows axis2工具,根据 WSDL生成java文件。 1、axis2客户端下载地址:http://mirror.esocc.com/apache//axis/axis2/java/core/1.6.2/axis2-1.6.2-bin.zip; 2、下载解压在D:\Work_Program_...
目前axis2最高版本是2.0以上的版本,但是eclipse和myeclipse都不支持,无奈只能使用低版本的插件1.6.3;经实验,可以安装成功; 安装方法:右键解压到当前文件夹,Copy解压的文件到eclipse安装目录dropins下,重启...
当你下载这个zip文件,你可以解压后在本地环境中搭建和运行Axis2服务。通过这个文件,开发者可以进行开发和测试Web服务,因为它提供了完整的Axis2框架以及运行时环境。此外,它还可能包含一些工具,如 wsdl2java 和 ...
axis2-java2wsdl-1.5.4.jar axis2-jaxbri-1.5.4.jar axis2-jaxws-1.5.4.jar axis2-jibx-1.5.4.jar axis2-json-1.5.4.jar axis2-kernel-1.5.4.jar axis2-metadata-1.5.4.jar axis2-mtompolicy-1.5.4.jar axis2-saaj-...
2. axis2-1.6.1-war:这是Axis2的较早版本,同样以WAR文件形式提供。与1.6.2相比,可能存在功能差异、bug修复或性能优化等方面的不同。 3. axis2-1.6.2-bin:这是Axis2的二进制发行版,通常包含可执行文件、库文件...
3. **axis2-1.4.1-war.zip**:这个压缩包是一个WAR(Web Application Archive)文件,表示Axis2作为一个Web应用程序的形式。它可以被部署到任何支持Servlet 2.4或更高版本的Web服务器,如Tomcat、Jetty等。WAR文件...
1、axis2相关jar包如下: axiom-api-1.2.10.jar axiom-dom-1.2.10.jar axiom-impl-1.2.10.jar axis2-adb-1.5.4.jar axis2-adb-codegen-1.5.4.jar axis2-codegen-1.5.4.jar axis2-corba-1.5.4.jar axis2-fastinfoset-...
axis2-1.6.2.zip, windows axis2工具,根据 WSDL生成java文件。 1、axis2客户端下载地址:http://mirror.esocc.com/apache//axis/axis2/java/core/1.6.2/axis2-1.6.2-bin.zip; 2、下载解压在D:\Work_Program_...
axis2 webservice 服务端jar包: -->axis2-kernel-1.6.1.jar -->axis2-spring-1.6.1.jar -->axis2-transport-http-1.6.1.jar -->XmlSchema-1.4.7.jar -->wsdl4j-1.6.2.jar -->axiom-api-1.2.12.jar -->axiom...
在Eclipse中,插件以插件目录的形式存在,包含了一系列的JAR文件和其他资源,这些文件共同构成了插件的功能模块。 综上所述,这个"axis2.eclipse.codengen.plugin-SNAPSHOT-axis2-eclipse-codegen-plugin.zip"包的...
axis2-eclipse-service-archiver-wizard.zip
axis2-adb-1.4.1.jar axis2-adb-1.4.1.jar