java webservice 文件传输_九、WebService中文件传输

WebService处理传递普通的信息,还可以传输文件,下面介绍WebService是怎么完成文件传输的。

1、 首先编写服务器端上传文件的WebService方法

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png代码

packagecom.hoo.service;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.InputStream;importjavax.activation.DataHandler;/*** function:Axis WebService完成文件上传服务器端

*@authorhoojo

* @createDate Dec 18, 2010 1:16:16 PM

* @file UploadFileService.java

* @package com.hoo.service

* @project AxisWebService

* @bloghttp://blog.youkuaiyun.com/IBM_hoojo* @email hoojo_@126.com

*@version1.0*/publicclassUploadFileService {/*** function:传递文件

*@authorhoojo

* @createDate Dec 18, 2010 1:27:58 PM

*@paramhandler DataHandler这个参数必须

*@paramfileName 文件名称

*@returnupload Info*/publicString upload(DataHandler handler, String fileName) {if(fileName!=null&&!"".equals(fileName)) {

File file=newFile(fileName);if(handler!=null) {

InputStream is=null;

FileOutputStream fos=null;try{

is=handler.getInputStream();

fos=newFileOutputStream(file);byte[] buff=newbyte[1024*8];intlen=0;while((len=is.read(buff))>0) {

fos.write(buff,0, len);

}

}catch(FileNotFoundException e) {return"fileNotFound";

}catch(Exception e) {return"upload File failure";

}finally{try{if(fos!=null) {

fos.flush();

fos.close();

}if(is!=null) {

is.close();

}

}catch(Exception e) {

e.printStackTrace();

}

}return"file absolute path:"+file.getAbsolutePath();

}else{return"handler is null";

}

}else{return"fileName is null";

}

}

}

上传方法和我们以前在Web中上传唯一不同的就是参数一DataHandler,可以将这类看成文件传输器,他可以把文件序列化。然后通过DataHandler可以得到一个输入流InputStream,通过这个流可以读到文件的内容。其他的操作和普通上传类似。

2、 定制wsdd发布文件上传的WebService服务

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png代码

上面才xml节点元素在前面都见过了,说明下operation中的参数,注意要指定参数类型,特别是DataHandler的类型,然后就是typeMapping的serializer、deserializer的序列化和反序列化工厂类的配置。

3、 用dos命令发布当前WebService

C:\SoftWare\tomcat-5.0.28\tomcat-5.0.28\webapps\AxisWebService\WEB-INF>java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/AxisWebService/services/AdminService deployUpload.wsdd

发布完成后,可以通过这个地址查看uploadFile这个service了

4、 编写客户端代码

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png代码

packagecom.hoo.client;importjava.rmi.RemoteException;importjavax.activation.DataHandler;importjavax.activation.FileDataSource;importjavax.xml.namespace.QName;importjavax.xml.rpc.ParameterMode;importjavax.xml.rpc.ServiceException;importorg.apache.axis.client.Call;importorg.apache.axis.client.Service;importorg.apache.axis.encoding.XMLType;importorg.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory;importorg.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory;/*** function:上传文件WebService客户端

*

*@authorhoojo

* @createDate Dec 18, 2010 1:38:14 PM

* @file UploadFileClient.java

* @package com.hoo.client

* @project AxisWebService

* @bloghttp://blog.youkuaiyun.com/IBM_hoojo* @email hoojo_@126.com

*@version1.0*/publicclassUploadFileClient {publicstaticvoidmain(String[] args)throwsServiceException, RemoteException {

String url="http://localhost:8080/AxisWebService/services/UploadFile";

String fileName="readMe.txt";

String path=System.getProperty("user.dir")+"\\WebRoot\\"+fileName;

System.out.println(path);//这样就相当于构造了一个带文件路径的File了DataHandler handler=newDataHandler(newFileDataSource(path));

Service service=newService();

Call call=(Call) service.createCall();

call.setTargetEndpointAddress(url);/*** 注册异常类信息和序列化类 ns:FileUploadHandler 和 wsdd 配置文件中的typeMapping中的xmlns:hns="ns:FileUploadHandler" 的对应 DataHandler

* 和 wsdd 配置文件中的typeMapping中的qname="hns:DataHandler"的DataHandler对应*/QName qn=newQName("ns:FileUploadHandler","DataHandler");

call.registerTypeMapping(DataHandler.class, qn,

JAFDataHandlerSerializerFactory.class,

JAFDataHandlerDeserializerFactory.class);

call.setOperationName(newQName(url,"upload"));//设置方法形参,注意的是参数1的type的DataHandler类型的,和上面的qn的类型是一样的call.addParameter("handler", qn, ParameterMode.IN);

call.addParameter("fileName", XMLType.XSD_STRING, ParameterMode.IN);//设置返回值类型,下面2种方法都可以call.setReturnClass(String.class);//call.setReturnType(XMLType.XSD_STRING);String result=(String) call.invoke(newObject[] { handler,"remote_server_readMe.txt"});

System.out.println(result);

}

}

至此,文件传输就完成了。怎么样,还不错吧!

如果你用myEclipse进行开发的话,运行时可能会出现以下的错误:

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream

原因是jar包版本不统一,解决方法如下:

删除Java EE 5 Libraries/javaee.jar/mail里的包有东西.

具体方法如下:

用rar打开X:/Program Files/MyEclipse 6.0/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_6.0.1.zmyeclipse601200710/data/libraryset/EE_5/javaee.jar,然后删除mail,一切就ok了.

使用WebService上传一个附件或者多个附件的实现方式 WebService 附件 大附件 多附件 立即下载

相关推荐

java 利用webservice传输文件

java调用windows系统的com组件,用jacob来处理。JACOB一个Java-COM中间件.通过这个组件你可以在Java应用程序中调用COM组件和Win32程序库。

webservice传递文件

webservice传递文件 文章目录webservice传递文件前言一、转化为文件流作为参数直接传递二、DataHandler方式三、URL下载总结 前言 提示:有些特定环境需要把文件传递到其他系统,但通过webservice传递的情况会有很多种情况,如小文件(图片等小于3M的文件),大文件(大于10M的文件); 因此采用几种方式: 1、小于3M(不大于7M)的情况,使用转化为文件流进行传递 2、大于10M的情况下使用DataHandler传递及URL下载的方式。 一、转化为文件流作为参数直接传递

铦鹞 4894

基于webservice的文件传输

基于webservice的文件传输。从理论角度详细说明了webservice传输文件的基本原理

Webservice 传输json、文件上传下载

1.所需jar implementation group: 'org.apache.cxf', name: 'cxf-rt-frontend-jaxws', version: '3.3.4' implementation group: 'org.apache.cxf', name: 'cxf-rt-transports-http', version: '3.3.4' implementation group: 'com.alibaba', name: 'fastjson', version: '1.2.75

iloki的博客 3041

易康eCognition9.0分类|规则集和机器学习的方法的面向对象的多尺度分割分类

基于易康eCognition9.0软件的规则集和机器学习的方法的面向对象的多尺度分割分类

weixin_46493028的博客 1万+

[TC3XX]AURIX TC3XX系列之启动流程

本文介绍了微控制器(MCU)启动过程中固件(Firmware)和启动软件(SSW)的工作原理。MCU上电复位后,硬件完成初始化,BootROM中的固件开始执行,进行参数加载、模式选择等操作。SSW作为第一个执行的软件,负责时钟配置、安全检查、多核管理及启动模式选择,最终跳转至用户代码。启动模式包括内部Flash启动、Bootloader模式(通过ASC或CAN接口)和备用启动模式(ABM),具体由复位类型、引脚配置和UCB设置决定。文章特别指出英飞凌TC3xx系列芯片中固件不可修改,只能通过配置参数定制启动

redparrot2008的博客 1421

九、WebService中文件传输

<br />WebService处理传递普通的信息,还可以传输文件,下面介绍WebService是怎么完成文件传输的。<br />1、 首先编写服务器端上传文件的WebService方法package com.hoo.service; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStream; import javax.

hoojo 2091

SAN存储与协议,了解SCSI、FC和ISCSI

在前面我们介绍SAN存储及iSCSI协议的时候了解到SAN存储其实是一个CS架构的系统。存储系统本身就是整个系统的服务端。以IP-SAN(也就是基于iSCSI的SAN存储)为例,其整体架构如图1所示。 图1 CS架构 对于存储系统来说,通常是由专业的存储厂商提供,比较知名的如EMC、NetAPP、IBM和日立等等。国内存储厂商也迅速崛起,比较知名的如华为、宏杉、浪潮和同友等等。另外,还有一些小的存储厂商,他们往往集中在某个领域,比如专注文件系统或者块存储等等。 除了专业的存储设备外,其实Linux

shuningzhang的专栏 2685

springboot2.x集成webservice服务(二)(文件传输)

背景 前几天我不是在鼓捣webservice嘛,鼓捣了半天,终于被我搞出点东西来了。 (感兴趣的同学可以去看下之前的文章,因为这个文章的代码都是基于前一篇的代码。 附上地址:springboot2.x集成webservice服务(一)) 但随着webservice的继续使用,会产生一些实际的问题。举个例子,很简单的问题:我们可以类比下http,比如文件传输? 我觉得这个算是一个很常见的问题吧。在w...

我是你妹她哥的博客 1871

使用C++实现DNS欺骗攻击

其中,domain_name表示需要欺骗的域名,dns_server_ip表示实际DNS服务器的IP地址,fake_ip表示需要重定向到的IP地址。在DNS查询过程中,当客户端向DNS服务器请求解析某个域名时,DNS服务器会返回该域名对应的IP地址。DNS劫持是一种常见的网络攻击方式,通过篡改DNS响应数据,使得用户访问的网站被重定向到攻击者指定的恶意站点。我们使用C++编写一个简单的DNS欺骗程序,使得当客户端请求解析特定的域名时,我们可以将其重定向到指定的IP地址。使用C++实现DNS欺骗攻击。

TechGlide的博客 412

rk3568 rk628桥片hdmi转lvds

RK628 是瑞芯微全新推出的视频桥接芯片,支持丰富的显示接口,支持高分辨率大屏产品转换需求。基于DRM、FB的显示框架易于使用。 输入信号支持:HDMI、RGB、BT.1120,输出信号支持 HDMI、GVI、Dual LVDS、Dual MIPI、MIPI-CSI、RGB、BT.1120,最高支持4K 60fps 输入/输出转换,并且支持输入到输出 1/4~4倍的缩放。

weixin_35723192的博客 1131

java中通过axis2访问webservice实现文件传输

axis1和axis2在技术架构上有着很大的不同,在网上找了很多方法,在自己本地测试无法通过。后来发现这是axis的版本不同,导致很多方法无法找到。 下面介绍axis2实现访问webservice,首先搭建webservice服务端: 在官网下载axis2所依赖的jar包。官网地址:http://axis.apache.org/axis2/java/core/download.cgi 下载ax...

qq_39481762的博客 2885

协方差矩阵自适应进化策略(CMA-ES)详解:从基础原理到优化算法

CMA-ES是一种先进的无导数优化算法,基于生物进化原理解决连续域非线性优化问题。该算法通过自适应调整多元正态分布的均值、协方差矩阵和步长参数,自动学习搜索空间结构,无需梯度信息即可高效优化。核心创新包括协方差矩阵的秩1和秩μ更新策略,以及基于进化路径的步长控制机制。CMA-ES具有旋转不变性、标度不变性和全局探索能力,特别适合3-300维的黑盒优化问题,在复杂系统仿真、超参数调优等领域表现优异。算法实现中关键参数如种群大小、学习率等均有自适应设置规则,使其成为连续优化领域的基准算法之一。

qq_42212808的博客 525

通过WebService上传文件

        用WebService传输文件,实际上就是客户端将文件先做成比特流,然后调用webservice接口,服务端再将比特流还原成文件。下面是代码:服务端:public class FileTransferWs ...{    public int uploadFile(byte []bs, String fileName) ...{        FileOutputStrea

1万+

YOLO11改进|卷积篇|引入SPDConv

YOLO11中添加SPDConv卷积

A1983Z的博客 3697

Openclaw错误分析与解决方案之:Agent couldn’t generate a response.

Openclaw错误分析与解决方案之:Agent couldn't generate a response. Note: some tool actions may have already been executed — please verify before retrying.

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 1316

jsp上传到webservice_JAVA实现WEBSERVICE 上传下载

因公司新项目决定使用webservice与其它项目做交互,于是开始了webservice之旅。初入webservice的时候第一个接触的工具叫axis2,网上有着大量的简单案例。功能很强大,代码自动生成,能传递各种类型的数据。但是考虑到整合入公司项目的问题,决定去找一个不是自动生成手写的webservice。于是看到了关于JWS相关的文章,但是在使用JWS(java jdk自带)的时候难以实现对复...

weixin_39673471的博客 132

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

WebService中文件传输

见:http://www.cnblogs.com/hoojo/archive/2010/12/20/1911385.html WebService处理传递普通的信息,还可以传输文件,下面介绍WebService是怎么完成文件传输的。 1、 首先编写服务器端上传文件的WebService方法 package com.hoo.service; impor

愿我如星君如月 ... 夜夜流光相皎洁 ... 1457

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

JAVA实现WEBSERVICE 上传下载

因公司新项目决定使用webservice与其它项目做交互,于是开始了webservice之旅。 初入webservice的时候第一个接触的工具叫axis2,网上有着大量的简单案例。功能很强大,代码自动生成,能传递各种类型的数据。但是考虑到整合入公司项目的问题,决定去找一个不是自动生成手写的webservice。于是看到了关于JWS相关的文章,但是在使用JWS(java jdk自带)...

a594455873的专栏 375

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

利用axis创建webservice实现文件传输

WebService处理传递普通的信息,还可以传输文件,下面介绍WebService是怎么完成文件传输的。 1、 首先编写服务器端上传文件的WebService方法 package com.hoo.service; import java.io.File; import java.io.FileNotFoundException; import java.io.FileO

FZfeng的专栏 7290
上一篇: 移动支付java_如何开发Java Card移动支付应用
下一篇: java arraylist 数组,如何在Java中创建ArrayLists数组?
奇异果小姐
博客等级 码龄7年 49粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值