今天用了一下webuploader插件,发现特别好用,但是在我自己写功能的时候,文件明明已经上传上去了,但是还是提示失败,我用的springMVC,然后发现提示我找不到对应的controller路径,我路径是没有问题的,然后并不执行uploadSuccess方法,最后发现在
showError = function(code) {
alert("code="+code);
switch( code ) {
case 'exceed_size':
text = '文件大小超出';
break;
case 'interrupt':
text = '上传暂停';
break;
default:
text = '上传失败,请重试';
break;
}
里面code是http,这是什么问题造成的呢?哪位大神可以帮忙
补充一下,uploadError返回的是undefined,为什么没有把值传过来?
自己来回答一下吧,今天一天就研究这个东西了,我用的springMVC,本来是很简单的事情,搞来搞去现在终于摸清楚了一点点,uploadError和uploadSuccess方法接受的类型是json的,用String的就会出现undefined,把后台返回值改成json的就好了,另外code返回http这个问题,随着也解决了,下面贴上我的代码
这个是upload.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="<%=basePath %>lib/webuploader/0.1.5/webuploader.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" href="<%=basePath %>css/uploader.css">
<title>fileUpload</title>
</head>
<body>
<div class="row cl">
<label class="form-label col-2">图片上传:</label>
<div class="formControls col-10">
<div class="uploader-list-container">
<div class="queueList">
<div id="dndArea" class="placeholder">
<div id="filePicker-2"></div>
<p>或将照片拖到这里,单次最多可选300张</p>
</div>
</div>
<div class="statusBar" style="display:none;">
<div class="progress"> <span class="text">0%</span> <span class="percentage"></span> </div>
<div class="info"></div>
<div class="btns">
<div id="filePicker2"></div>
<div class="uploadBtn">开始上传</div>
</div>
</div>
</div>
</div>
</div>
</body>
<script src="<%=basePath %>js/jquery-1.9.1.js"></script>
<script src="<%=basePath %>lib/webuploader/0.1.5/webuploader.min.js"></script>
<script src="<%=basePath %>js/fileUpload.js"></script>
<script type="text/javascript">
(function( $ ){
// 当domReady的时候开始初始化
$(function() {
uploadReady('<%=basePath%>upload.action');
});
})( jQuery );
</script>
</html>
这个是后台上传的Controller
package com.TimeSea.controller;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
@Controller
public class UploadController extends com.jfinal.core.Controller {
@RequestMapping("index")
public void index(){
render("upload.jsp");
}
@RequestMapping(value="upload.action",method=RequestMethod.POST)
@ResponseBody
public String imageUpload(HttpServletRequest request,HttpServletResponse response)throws Exception{//返回文件存储相对路径
CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(
request.getSession().getServletContext());
//检查form中是否有enctype="multipart/form-data"
String path = "";
String status = "";
System.out.println("----------------------------------------------");
JSONObject json = new JSONObject();
if(multipartResolver.isMultipart(request))
{
String newFileName = "";
//将request变成多部分request
MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;
//获取multiRequest 中所有的文件名
Iterator iter=multiRequest.getFileNames();
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//设置日期格式
while(iter.hasNext())
{
//一次遍历所有文件
MultipartFile file=multiRequest.getFile(iter.next().toString());
if(file!=null)
{
String fullFileName = file.getOriginalFilename();
String extendsFileName = fullFileName.substring(fullFileName.lastIndexOf(".")+1);
String fileName = fullFileName.substring(0, fullFileName.lastIndexOf("."));
newFileName = fileName+String.valueOf(df.format(new Date()))+"."+extendsFileName;
path = "C:/MyeclipseWorkspace/TimeSeaUpload/"+newFileName;
//上传
file.transferTo(new File(path));
}
}
json.put("status", "OK");
System.out.println(json.toString());
return json.toString();
}else{
json.put("status", "NO");
return json.toString();
}
}
}