springmvc多用户同时上传文件到服务器

简介: 项目运行在远程虚拟机ubuntu上,文件上传到阿里百川多媒体下。单个或几个客户同时上传文件时上传成功,几十上百时只有部分上传成功,其余失败,而且不报错。上传失败出现异常:File has been moved - cannot be read again.

1、环境 myeclipse2014 tomcat7ubuntu

2、springMVC相关jar包,sdk1.2.6.jar

3、项目运行在远程虚拟机ubuntu上,文件上传到阿里百川多媒体下。

4、问题:

4.1、单个或几个客户同时上传文件时上传成功,几十上百时只有部分上传成功,其余失败,而且不报错。过程表现为:服务器接收到文件数据,在阿里百川文件管理页面可以看到上传文件的信息,但最终只剩下上传成功的文件的信息,而上传失败的文件信息则从原来显示的表格中消失。查看日志,没有出现异常信息。猜想是方法调用出现问题(瞎猜),于是改用消息队列,先将请求放入队列,再一个个取出来上传。

4.2、以上改善后上传成功几率更小,上传失败出现异常:File has been moved - cannot be read again.

 686f90d09b095e24e5adfaff33964a5f7af0eea7

网上查到类似错误情形:分析有两种种原因在配置spring MultipartResolver时不仅要配置maxUploadSize,还需要配置maxInMemorySize。但原因都没说的很清楚。只是简单说maxInMemorySize的默认值为10240 bytes10K),超出这个大小的文件上传spring会先将上传文件记录到临时文件中。临时文件会被删除。②多线程,每个文件上传都开一个线程。

很显然,我用的是一个线程,所以不可能是后中情况。

所以只能从第一种情况来考虑。初次将maxInMemorySize设为40k测试没有半点效果,我的测试客户端上传文件都是3.2M的。十个客户端就是32M,很显然设置maxInMemorySize值用处不大。而且报错就是文件被移除,文件为什么会被移除,据说是apache内部原理,看不到也不懂。想了半天,最终我自己先把文件存在本地作为临时文件,再一个一个上传到目的地。

5、主要代码:

public class UploadFileMessage{

private String dir;

private Long userID;

private String fileType;

private String tempFilename;

private String filename;

get/set 省略

}

 1a20326ca739f258d33809981f4bf3328072f8e8

5c15614d4f6506abac2d2da9f0888704a3c7775b

 

 

运用以上方法,大体解决了多客户端同时上传文件部分上传失败的问题。

目录
相关文章
|
2月前
|
缓存 网络协议 数据可视化
WinSCP下载安装并实现远程SSH本地服务器上传文件
WinSCP下载安装并实现远程SSH本地服务器上传文件
|
4月前
Socket网络编程练习题三:客户端上传文件到服务器
Socket网络编程练习题三:客户端上传文件到服务器
|
7月前
|
存储 网络安全 数据安全/隐私保护
scp上传文件到远程服务器,如何避免每次都要输入远程服务器的密码
scp上传文件到远程服务器,如何避免每次都要输入远程服务器的密码
116 0
|
5月前
|
应用服务中间件 开发工具 Android开发
Tomcat配置虚拟路径,使上传文件与服务器分离
Tomcat配置虚拟路径,使上传文件与服务器分离
58 0
|
7月前
|
JSON C# 数据格式
.net core 上传文件到本地服务器
## 1、本文是上传文件到本地服务器,主要以作者做的业务上传apk为例子,下面直接上代码 ```csharp [HttpGet, HttpPost, HttpOptions] [Consumes("application/json", "multipart/form-data")] public IActionResult UploadFileToServer([FromForm] IFormCollection file) { try { IFormFile item = null; if(file.IsNull() || file.Count
63 0
|
8月前
|
Web App开发 前端开发 JavaScript
使用自开发的代理服务器解决 SAP UI5 FileUploader 上传文件时遇到的跨域访问错误试读版
使用自开发的代理服务器解决 SAP UI5 FileUploader 上传文件时遇到的跨域访问错误试读版
33 0
|
8月前
|
数据库
如何使用 SAP OData 服务向 ABAP 服务器上传文件试读版
如何使用 SAP OData 服务向 ABAP 服务器上传文件试读版
54 0
|
9月前
|
前端开发 JavaScript Java
SpringMVC--服务器表单校验
SpringMVC--服务器表单校验
46 0
|
11月前
|
Java
向服务器端上传文件(Java代码)
向服务器端上传文件(Java代码)
239 0
|
11月前
|
Java Linux Shell
java上传文件到sftp服务器
最近公司有个数据对接需求,合作方那边是使用我们这边的系统进行出单的,数据首先也是在我们这边。后面他们自己开发了业务系统,需要我们这边定时把每天的数据传送到那边去。他们那边开发部门要求我们这边,按一定的格式导出加签加密的数据文件到他们的sftp服务器上面去。
200 0