通过web service的方式上传附件和下载附件,以及内存溢出问题
2009-01-05 15:29
239 查看
前一阵子给朋友做了一个小东东,因为全部采用的是web service方式,使用了apache的axis,其中一个功能是上传下载,就直接使用了web service 的方式来上传附件。
原理很简单,就是把文件转换成字节byte[]传到服务端过去,下载也是正好是反过来的过程。
定义web service的接口类
public interface UploadService extends java.rmi.Remote {
public int uploadFile(org.cxp.info.entity.UploadFile[] file, java.lang.String fileName) throws java.rmi.RemoteException;
public org.cxp.info.entity.UploadFile[] getUploadFile(org.cxp.info.entity.UploadFile condition) throws java.rmi.RemoteException;
}
定义UploadFile类,该类封装了文件byte,文件名
public class UploadFile implements java.io.Serializable {
private java.lang.String key;
private java.lang.String fileName;
private byte[] fileByte;
public UploadFile() {
}
public UploadFile(
java.lang.String key,
java.lang.String fileName,
byte[] fileByte) {
this.key = key;
this.fileName = fileName;
this.fileByte = fileByte;
}
...//以上变量的get和set方法,不再写出
}
这样客服端就可以通过调用这样的接口上传附件和下载附件了。客服端和服务端都要有这个接口。
问题来了,通过这样的上传,有些客服端附件超过4M就会上传不成功,提示内存溢出。
我们知道在在终端启动一个java程序,如,我们运行YourClass.class,要这样写 java -classpath your.lib YourClass
如果YourClass.class要调用上述web service 的接口进行上传文件,我们需要这样增加参数 -mx80M ,
如:java -classpath your.lib -mx80 YourClass
经测试就可以传10M左右的附件。可以把80改大,就能上传更大的附件,当然,web service上传功能有限,
在使用中需要仔细斟酌
原理很简单,就是把文件转换成字节byte[]传到服务端过去,下载也是正好是反过来的过程。
定义web service的接口类
public interface UploadService extends java.rmi.Remote {
public int uploadFile(org.cxp.info.entity.UploadFile[] file, java.lang.String fileName) throws java.rmi.RemoteException;
public org.cxp.info.entity.UploadFile[] getUploadFile(org.cxp.info.entity.UploadFile condition) throws java.rmi.RemoteException;
}
定义UploadFile类,该类封装了文件byte,文件名
public class UploadFile implements java.io.Serializable {
private java.lang.String key;
private java.lang.String fileName;
private byte[] fileByte;
public UploadFile() {
}
public UploadFile(
java.lang.String key,
java.lang.String fileName,
byte[] fileByte) {
this.key = key;
this.fileName = fileName;
this.fileByte = fileByte;
}
...//以上变量的get和set方法,不再写出
}
这样客服端就可以通过调用这样的接口上传附件和下载附件了。客服端和服务端都要有这个接口。
问题来了,通过这样的上传,有些客服端附件超过4M就会上传不成功,提示内存溢出。
我们知道在在终端启动一个java程序,如,我们运行YourClass.class,要这样写 java -classpath your.lib YourClass
如果YourClass.class要调用上述web service 的接口进行上传文件,我们需要这样增加参数 -mx80M ,
如:java -classpath your.lib -mx80 YourClass
经测试就可以传10M左右的附件。可以把80改大,就能上传更大的附件,当然,web service上传功能有限,
在使用中需要仔细斟酌
相关文章推荐
- 通过<iframe>,实现图片(文件)的上传以及文件(附件)的下载
- 通过字节流方式实现文件下载以及其中的编码问题
- 解决在Windows 2003的 IIS 6.0 中无法上传超过200K的附件以及无法下载超过4M的附件问题
- spring 配置内存溢出监听器、文件上传、ie下载json问题
- 解决在Windows 2003的 IIS 6.0 中无法上传超过200K的附件以及无法下载超过4M的附件问题
- 解决在Windows 2003的 IIS 6.0 中无法上传超过200K的附件以及无法下载超过4M的附件问题
- 解决在Windows 2003的 IIS 6.0 中无法上传超过200K的附件以及无法下载超过4M的附件问题
- 解决在Windows 2003的 IIS 6.0 中无法上传超过200K的附件以及无法下载超过4M的附件问题
- 解决IIS 6.0 中无法上传超过200K以及无法下载超过4M 的附件
- struts2中通过Action以InputStream的下载文件以及在iOS以及Android端接收的实现方式
- IE8浏览器无法上传附件的解决方案以及相关兼容问题
- 下载图片过多溢出内存问题
- mavan下scala编译中文乱码的问题.以及内存溢出问题解决
- WebAPI通过multipart/form-data方式同时上传文件以及数据(含HttpClient上传Demo)
- java 通过SSH方式连接远程主机并上传和下载文件
- myeclise 上传文件 内存溢出问题
- 文件上传下载:通过java方法把附件保存到clob字段中
- SpringMVC+ajaxFileUpload上传图片 IE浏览器弹下载框问题解决方式
- gmail以及163的邮件附件上传cool方式
- gmail以及163的邮件附件上传cool方式