这是spring-mvc.xml中的

<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartRe solver">
<property name="defaultEncoding" value="UTF-8" />
<!-- 指定所上传文件的总大小不能超过2000KB。注意maxUploadSize属性的限制 不是针对单个文件,而是所有文件的容量之和 -->
<property name="maxUploadSize" value="2048000" />
<property name="maxInMemorySize" value="10240" />
</bean>

下面是方法:

@RequestMapping(value="uploadFile.do",method={RequestMethod.GET,RequestMethod.POST})
public String ajaxUpload(ModelMap mm,HttpSession ses,HttpServletRequest req
) throws Exception {
try {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) req;
// 获得文件:
MultipartFile upload = multipartRequest.getFile("upload");
String newFileName = new Date().getTime() + "_" + SesHelper.getSimUser(ses).getManageUser().getMuId()
+ getExtention(upload.getOriginalFilename()); CommonsMultipartFile cf= (CommonsMultipartFile)upload;
DiskFileItem fi = (DiskFileItem)cf.getFileItem();
File targetFile = fi.getStoreLocation(); if(ArrayUtils.indexOf(imageExtentions, getExtention(upload.getOriginalFilename()).substring(1))!=-1){
**RemoteFileUtil.copyImage(targetFile, newFileName);**
}else{
throw new BaseException("请确定是图片文件");
}
handleSuc(mm);
mm.put("msg", imgServerName+newFileName);
} catch (Exception e) {
handleErr(mm , e);
}
return JSON_COM;
}

上面的调这个方法

    public static synchronized void copyImage(File src, String filename) {
try {
**copy(src, filename);**
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("请检查服务器:" + serverIps[0] + ":" + serverPorts[0] + "是否连接通畅");
}
}

上面的调这个方法

private static synchronized void copy(File src, String filename)
throws UnknownHostException, IOException {
for (int i = 0; i < serverIps.length; i++) {
Socket client = new Socket(serverIps[i], Integer
.parseInt(serverPorts[i]));
OutputStream os = client.getOutputStream();
os.write((filename + ";").getBytes());
byte[] byteBuffer = new byte[1];
FileInputStream fos = new FileInputStream(src);
BufferedInputStream bis = new BufferedInputStream(fos);
System.out.println(filename);
**while (bis.read(byteBuffer) != -1) {
os.write(byteBuffer);
}**
os.flush();
bis.close();
fos.close();
os.close();
client.close();
System.out.println(client.getLocalAddress());
}
}
下面是页面
    <script type="text/javascript">
axUpload=true;
var fileName = "";
function ajaxuploadsubmit() {
var index = layer.load();
$('#uploadForm').ajaxSubmit({
url:'${siteUrl}/file/uploadFile.do',
type:'post',
dataType: 'json',
success:function (data){
if(data.code == "S"){
layer.close(index);
layer.msg("文件上传成功,上传文件的文件名为"+data.msg, {icon: 1});
fileName = data.msg;
closeAndOpenSuc();
}else{
layer.close(index);
layer.msg(data.msg, {icon: 2});
} }
});
} function closeAndOpenSuc() {
layer.close(uploadObj.imgLayerId);
$('#'+uploadObj.imgInputId).val(fileName);
$('#'+uploadObj.imgShowId).attr("src",fileName);
} function closeAndOpen() {
layer.close(uploadObj.imgLayerId);
}
</script> <div class="modal-content">
<div class="modal-body">
<form id="uploadForm" class="form-horizontal" role="form" enctype="multipart/form-data">
<div class="padd">
<div class="form quick-post">
<div class="form-group">
<label class="control-label col-lg-2" style="width:100px;padding-top:5px;">选择文件</label>
<div class="col-lg-6">
<input id="upload" type="file" size="30" height="20px" name="upload">
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-2" style="width:100px;padding-top:5px;">&nbsp;</label>
<div class="col-lg-6">
<input type="button" name="button" value="上传文件" class="btn btn-success" onclick="ajaxuploadsubmit()" />
</div>
</div>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" onclick="closeAndOpen()">关闭</button>
</div>
</div>

报错信息
while (bis.read(byteBuffer) != -1) {
os.write(byteBuffer);
}
中会报错

java.io.FileNotFoundException: C:\apache-tomcat-7.0.61\work\Catalina\localhost\FishManage\upload_de2e4204_56e7_4b34_adce_163e38e29654_00000003.tmp (系统找不到指定的文件。)

已解决,问题出在配置文件上

<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8" />
<!-- 指定所上传文件的总大小不能超过2000KB。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
<property name="maxUploadSize" value="2048000" />
<!-- 设置在文件上传时允许写到内存中的最大值,以字节为单位计算,默认是10240 -->
<!-- 但是经实验,上传文件大小若小于此参数,则不会生成临时文件,很尴尬,故改为2048 -->
<property name="maxInMemorySize" value="2048" /> </bean>
```
maxInMemorySize这个参数得改的小一点 转自:http://ask.csdn.net/questions/191012

spring mvc做上传图片,文件小于10k就不生成临时文件了的更多相关文章

  1. spring mvc 的上传图片是怎么实现的?

    spring mvc 的上传图片是怎么实现的? 导入jar包,commons-io.jar 及 commons-fileupload.jar 在springmvc的配置文件中配置Mutipart解析器 ...

  2. Spring MVC上传文件原理和resolveLazily说明

    问题:使用Spring MVC上传大文件,发现从页面提交,到进入后台controller,时间很长.怀疑是文件上传完成后,才进入.由于在HTTP首部自定义了“Token”字段用于权限校验,Token的 ...

  3. 【Spring MVC】Properties文件的加载

    [Spring MVC]Properties文件的加载 转载:https://www.cnblogs.com/yangchongxing/p/10726885.html 参考:https://java ...

  4. Spring MVC上传文件

    Spring MVC上传文件 1.Web.xml中加入 <servlet> <servlet-name>springmvc</servlet-name> <s ...

  5. Spring MVC 上传文件

    Spring MVC上传文件需要如下步骤: 1.前台页面,form属性 method设置为post,enctype="multipart/form-data"  input的typ ...

  6. Spring MVC 全局异常处理&文件上传

    Spring MVC 全局异常处理 使用SimpleMappingExceptionResolver实现异常处理 在welcome-servlet.xml进行如下配置: <bean class= ...

  7. spring mvc 简单的文件上传与下载

    上传文件有很多种方法,这里主要讲解的是spring mvc内提供的文件上传 前提使用:spring mvc 在这个之前我们需要把环境给配置好 1:springmvc的XML配置文件加上这一段就即可, ...

  8. 【Spring学习笔记-MVC-13.2】Spring MVC之多文件上传

    作者:ssslinppp       1. 摘要 前篇文章讲解了单文件上传<[Spring学习笔记-MVC-13]Spring MVC之文件上传>http://www.cnblogs.co ...

  9. spring MVC multipart处理文件上传

    在开发Web应用程序时比较常见的功能之一,就是允许用户利用multipart请求将本地文件上传到服务器,而这正是Grails的坚固基石——Spring MVC其中的一个优势.Spring通过对Serv ...

随机推荐

  1. BZOJ1150:[CTSC2007]数据备份

    浅谈堆:https://www.cnblogs.com/AKMer/p/10284629.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?id ...

  2. cookie与web Storage

    一.cookie 1. http头与cookie cookie是HTTP Cookie的简称.该标准要求: (1)服务器的HTTP响应头包含 Set-Cookie字段 响应头Eg: HTTP/1.1 ...

  3. 拓扑排序 POJ 1094 Sorting It All Out

    题意:给定N个字和M行他们之间的关系,要求输出他们的拓扑排序.此题采用边输入边检测的方式,如果发现环,就结束并输出当前行号:如果读取到当前行时,可以确定拓扑序列就输出,不管后面的输入(可能包含环路): ...

  4. Poj1062 昂贵的聘礼 (dijkstra算法)

    一.Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长 ...

  5. vijos1779国王游戏

    描述 恰逢H国国庆,国王邀请n位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这n位大臣排成一排,国王站在队伍的最前面.排好队后, ...

  6. [MySQL]关于Com_状态

    MySQL 5.5官方文档: http://dev.mysql.com/doc/refman/5.5/en/server-status-variables.html#statvar_Com_xxx C ...

  7. ceph学习之CRUSH

    CRUSH的全称是Controlled Replication Under Scalable Hashing,是ceph数据存储的分布式选择算法,也是ceph存储引擎的核心.在之前的博客里介绍过,ce ...

  8. javadoc 工具生成开发API文档

    =====================先来一点成就感===================== package com.springMybatis.dao; import com.springMy ...

  9. C笔试题(一)

    a和b两个整数,不用if, while, switch, for,>, <, >=, <=, ?:,求出两者的较大值. 答案: int func(int a, int b) { ...

  10. .net之特性(Attribute)

    看了一些关于这方面的文档,自我总结: 特性(Attribute)就是对一个方法或类做的一个额外的属性说明,也就是附加说明 下面是我自己抄的一个实例程序: using System; using Sys ...