SpringMVC-文件异步上传

<head> 
<script src="jquery-2.1.4.js"></script>
    <script>
        $(function () {
            $("#upload").click(function () {
                $("#imgWait").show();
                var formData = new FormData();
                formData.append("myfile", document.getElementById("file1").files[0]);   
                $.ajax({
                    url: "upload.ashx",
                    type: "POST",
                    data: formData,
                    /**
                    *必须false才会自动加上正确的Content-Type
                    */
                    contentType: false,
                    /**
                    * 必须false才会避开jQuery对 formdata 的默认处理
                    * XMLHttpRequest会对 formdata 进行正确的处理
                    */
                    processData: false,
                    success: function (data) {
                        if (data.status == "true") {
                            alert("上传成功!");
                        }
                        if (data.status == "error") {
                            alert(data.msg);
                        }
                        $("#imgWait").hide();
                    },
                    error: function () {
                        alert("上传失败!");
                        $("#imgWait").hide();
                    }
                });
            });
        });
    </script>
</head>
<body>   
        选择文件:<input type="file" id="file1" /><br />
        <input type="button" id="upload" value="上传" />
        <img src="wait.gif" style="display:none" id="imgWait" />   
</body>
后台:

@RequestMapping("/solutionSubmit")
public ModelAndView solutionSubmit(HttpSession session,@RequestParam("file")CommonsMultipartFile file,HttpServletRequest request,ModelAndView model){
String username = request.getParameter("username");
String fileName = file.getOriginalFilename(); //获取文件名
int pid = Integer.parseInt(request.getParameter("pid"));
//String path = request.getSession().getServletContext().getRealPath("/solution");//开发期间,文件先放在这里,发布之后更换存储目录String path = req.getRealPath("/solution");
String path = request.getRealPath("/solution");
InputStream is = null;
OutputStream os = null;
try {
is = file.getInputStream();
os = new FileOutputStream(new File(path,fileName));
int length = 0;
byte[] buffer = new byte[1024];
while((length = is.read(buffer)) != -1){
os.write(buffer, 0, length);
}
boolean flag = service.saveSolutionToDB(username, path + "/" + fileName);
boolean mappingResult = service.insertPidMappingSid(pid);
if(flag && mappingResult){
model.addObject("msg", "上传成功,请等待专家审核,通过审核后电话联系您!");
model.setViewName("jsp/solutionSubmitStatus");
}else{
model.addObject("msg", "上传失败,请重新上传!");
model.setViewName("jsp/solutionSubmitStatus");
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
os.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return model;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值