javawebservice上传文件

java webservice上传大文件,该怎么处理

您好,我来为您解答:

这个要借助于第三方控件来实现超大文件的上传。普通的方式肯定不行。

希望我的回答对你有帮助。

javawebservice上传文件

webservice怎么传递xml

WebService中文件传输

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

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

package com.hoo.service;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.InputStream;

import javax.activation.DataHandler;

/**

* bfunction:/bAxis WebService完成文件上传服务器端

* @author hoojo

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

* @file UploadFileService.java

* @package com.hoo.service

* @project AxisWebService

* @blog

* @email hoojo_@126.com

* @version 1.0

*/

public class UploadFileService {

/**

* bfunction:/b传递文件

* @author hoojo

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

* @param handler DataHandler这个参数必须

* @param fileName 文件名称

* @return upload Info

*/

public String upload(DataHandler handler, String fileName) {

if (fileName != null !””.equals(fileName)) {

File file = new File(fileName);

if

怎么用WebService传输XML文件

WebService中文件传输

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

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

package com.hoo.service;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.InputStream;

import javax.activation.DataHandler;

/**

* bfunction:/bAxis WebService完成文件上传服务器端

* @author hoojo

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

* @file UploadFileService.java

* @package com.hoo.service

* @project AxisWebService

* @blog

* @email hoojo_@126.com

* @version 1.0

*/

public class UploadFileService {

/**

* bfunction:/b传递文件

* @author hoojo

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

* @param handler DataHandler这个参数必须

* @param fileName 文件名称

* @return upload Info

*/

public String upload(DataHandler handler, String fileName) {

if (fileName != null !””.equals(fileName)) {

File file = new File(fileName);

if (handler != null) {

InputStream is = null;

FileOutputStream fos = null;

try {

is = handler.getInputStream();

fos = new FileOutputStream(file);

byte[] buff = new byte[1024 * 8];

int len = 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服务

?xml version=”1.0″ encoding=”UTF-8″?

deployment xmlns=””

xmlns:java=””

service name=”UploadFile” provider=”java:RPC”

parameter name=”className” value=”com.hoo.service.UploadFileService” /

parameter name=”allowedMethods” value=”*” /

parameter name=”scope” value=”Session” /

!– 和服务器端上传文件的方法签名对应,参数也对应 —

operation name=”upload” qname=”operNS:upload” xmlns:operNS=”upload” returnType=”rns:string”

xmlns:rns=””

parameter name=”handler” type=”ns:DataHandler” xmlns:ns=””/

parameter name=”fileName” type=”ns:string” xmlns:ns=””/

/operation

typeMapping qname=”hns:DataHandler” xmlns:hns=”ns:FileUploadHandler”

languageSpecificType=”java:javax.activation.DataHandler”

serializer=”org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory” deserializer=”org.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory” encodingStyle=””/

/service

/deployment

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

3、 用dos命令发布当前WebService

C:\SoftWare\tomcat-5.0.28\tomcat-5.0.28\webapps\AxisWebService\WEB-INFjava -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -l deployUpload.wsdd

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

4、 编写客户端代码

package com.hoo.client;

import java.rmi.RemoteException;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.xml.namespace.QName;

import javax.xml.rpc.ParameterMode;

import javax.xml.rpc.ServiceException;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import org.apache.axis.encoding.XMLType;

import org.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory;

import org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory;

/**

* bfunction:/b上传文件WebService客户端

*

* @author hoojo

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

* @file UploadFileClient.java

* @package com.hoo.client

* @project AxisWebService

* @blog

* @email hoojo_@126.com

* @version 1.0

*/

public class UploadFileClient {

public static void main(String[] args) throws ServiceException, RemoteException {

String url = “”;

String fileName = “readMe.txt”;

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

System.out.println(path);

//这样就相当于构造了一个带文件路径的File了

DataHandler handler = new DataHandler(new FileDataSource(path));

Service service = new Service();

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 = new QName(“ns:FileUploadHandler”, “DataHandler”);

call.registerTypeMapping(DataHandler.class, qn,

JAFDataHandlerSerializerFactory.class,

JAFDataHandlerDeserializerFactory.class);

call.setOperationName(new QName(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(new Object[] { 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了.

前台js 后台java 怎么上传文件

前台部分代码:

form name=”buildform” id=”buildform” action=” ” enctype=”multipart/form-data” method=”post”

table

tr

td colspan=”” class=”label”文件上传:/td

td class=”label” align=”left”

div id=”d”

input type=”file” name=”fileurl” value=”” /

/div

/td

/tr

/table

后台部分代码java:

// 创建一个文件上传的工厂实例

DiskFileItemFactory factory = new DiskFileItemFactory();

// 设置文件缓存地址和缓存大小

factory.setRepository(new File(request.getRealPath(“/”)));

factory.setSizeThreshold(1024 * 1024 * 20);

// 用上工厂实例创建一个上传文件对象

ServletFileUpload upload = new ServletFileUpload(factory);

upload.setHeaderEncoding(“gbk”);

String name = “”;

String code = “”;

String sredate = “”;

String ssetdate = “”;

String setworker = “”;

String reworker = “”;

String memo = “”;

String contents = “”;

Long redptid = null;

Long setdptid = null;

String fileurl = “”;

SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);

Date setdate = null;

Date revisedate = null;

// 处理页面传过来的表单项

int k = 0;

List items = null;

try {

items = upload.parseRequest(request);

} catch (FileUploadException e) {

e.printStackTrace();

}

// 遍历所有的表单项

for (int i = 0; i items.size(); i++) {

FileItem item = (FileItem) items.get(i);

// 如果这个表单是普通表单域

if (item.isFormField()) {

// 取得表单名

String formname = item.getFieldName();

if(formname.equals(“name”)){

name = item.getString(“gbk”);

}else

if(formname.equals(“code”)){

code = item.getString(“gbk”);

}else

if(formname.equals(“revisedate”)){

sredate = item.getString(“gbk”);

if(!sredate.equals(“”)){

revisedate = sdf.parse(sredate);

}

}else

if(formname.equals(“setdate”)){

ssetdate = item.getString(“gbk”);

if(!ssetdate.equals(“”))

setdate = sdf.parse(ssetdate);

}else

if(formname.equals(“redptid”)){

String s_redptid = item.getString(“gbk”);

if(!s_redptid.equals(“x”))

redptid = Long.parseLong(s_redptid);

}else

if(formname.equals(“setdptid”)){

String s_setdptid = item.getString(“gbk”);

if(!s_setdptid.equals(“x”))

setdptid = Long.parseLong(s_setdptid);

}else

if(formname.equals(“setworker”)){

setworker = item.getString(“gbk”);

}

/*// 取得表单的value值

String formvalue = item.getString(“gbk”);*/

}

// 如果是文件域

else {

k++;

// 取得文件域的表单域名

String fieldName = item.getFieldName();

// 取得文件名

String fileName = item.getName();

// 取得文件类型

String contentType = item.getContentType();

// 对于上传文件的存放地址来建立一个输出流

FileOutputStream fos = new FileOutputStream(request

.getRealPath(“/”)+”uploadimg/” + imgName);

// 判断上传文件是否在缓存中

if (item.isInMemory()) {

// 得到上传文件输入流

InputStream is = item.getInputStream();

byte[] buffer = new byte[1024];

int len;

// 将上传文件写入服务器文件中

while ((len = is.read(buffer)) 0) {

fos.write(buffer, 0, len);

}

is.close();

fos.close();

}

}

}

}

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月24日 16:58:50
下一篇 2024年3月24日 17:07:07

相关推荐

  • linux上传文件覆盖,linux文件覆盖命令

    linux怎样将文件覆盖到另一个文件 1、cp -f 强行复制文件或目录,不论目标文件或目录是否已存在。 2、linux系统使用cp命令即可将一个文件夹里面的文件复制到另外一个文件夹里面。这个命令相当于dos下面的copy命令,具体用法是:cp_r源文件目的文件,其中参数r是指连同源文件中的子目录一同拷贝。 3、Linux cp命令主要用于复制文件或目录,英…

    2024年5月23日
    3900
  • javawebservice学习,java webservice soap

    高级Java软件工程师必须学什么? java工程师需要学什么?下面为您详细介绍!JavaEE基础:Java基础语法、面向对象、核心类库、集合、异常、IO、线程、JDK新特性。 Java软件工程师主要学习html网页设计基础,divcss网页布局设计,html5开发,JavaScript变成,sql-server数据库,Java语言基础,Java面向对象程序设…

    2024年5月22日
    4100
  • javawebservice调用超时,java调用webservices

    急:使用webservice方式跟第三方通讯时超时【java.net.ConnectException… 第3个异常是java.net.SocketException: Socket is closed,该异常在客户端和服务器均可能发生。异常的原因是己方主动关闭了连接后(调用了Socket的close方法)再对网络连接进行读写操作。 先把连接超时…

    2024年5月22日
    3200
  • javaftp上传图片到服务器,java上传文件到ftp服务器

    java实现图片上传至服务器并显示,如何做? 1、file inputstream outputstream ,基本上IO流章节实现,当然还有很多封装的jar包,网上去搜搜。 2、我们使用一些已有的组件帮助我们实现这种上传功能。 3、可以使用Apache的common-fileupload组件进行上传。当然也可以使用其他方式,如ftp上传等,可以用Apach…

    2024年5月20日
    3600
  • javawebservice传值,javaweb怎么传值

    java调用webservice接口参数怎么传 wsdl2java 会根据wsdl文件生成web服务的调用接口,参数类,返回值的类。在调用webservice的时候直接实例化一个XXXXStub的对象,然后调用web服务的方法就可以了。 直接new一个对象放里面,或者直接把实体类的路径放上去。 基本上流程就是这样,当然,实际应用上能写出很复杂的东西,这个你可…

    2024年5月20日
    4200
  • java上传文件乱码,java上传文件 multipartfile

    java中文乱码问题 读取文件的时候如果是用的read方法(字节流),碰到中文输出就是乱码,然后存储的时候设置下编码为GBK或者是UTF-8形式即可,可以有效的解决乱码问题。 首先在软件中,右键出现中文乱码的java项目名,在右键菜单中选择最后一项Properties。点击【Properties】,在弹出窗口选择Resource选项,然后在右侧操作窗口中的第…

    2024年5月17日
    4500
  • ueditorjava文件上传,ultraedit上传文件

    ueditor自定义实现文件上传 1、在页面中引入UEditor的核心文件ueditor.config.js和ueditor.all.min.js以及需要使用的语言文件(如zh-cn.js)。创建一个容器,用于显示UEditor编辑器。在JavaScript中创建一个UEditor实例并配置相关参数。 2、配置正确之后UEditor有上传功能帮助我们上传图片…

    2024年5月16日
    4400
  • c调用javawebservice,c调用函数

    C# 调用Java的WebService(返回json格式数据),老是返回null, 求解… 1、c是字母符号。C(大写) 、c(小写)是英文字母顺数第三个,俄语字母顺数第19个。例如:英语单词cloud和“苏联”的俄语缩写СССР的第一个字母就是c。 2、c的意思:在化学中,表示碳的化学符号。在乐理中,表示:音阶中的C音,调号中于C音开始的音乐…

    2024年5月16日
    3800
  • javawebservice入门,java webservice开发

    软件开发都有哪些课程 首先要学习计算机基础课程,包括操作系统(体系结构)、计算机网络、算法设计、数据结构、编程语言基础、编译原理、数据库等内容。基础课程对于后续的学习是比较重要的,开发人员未来的成长高度在很大程度上取决于基础是否扎实。 软件开发专业需要学习多种软件和课程,其中包括:计算机硬件原理。学习计算机硬件的基本原理和组成,包括计算机体系结构、中央处理器…

    2024年5月16日
    3400
  • c上传文件到linux服务器,如何传文件到linux服务器

    Linux文件传输命令有哪些 通过ping命令来确认,有回送的消息就是可以通的。其次将文件夹打包,使用tar命令实现。接下来用scp命令传送就可了,速度很快的。不过传送完毕后需要再解压一下才可以。 Linux SSH远程文件/目录传输命令scp scp是什么?scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp…

    2024年5月16日
    8400

发表回复

登录后才能评论



关注微信