求助大神,项目中用到了bootstrap fileinput+struts2,写好后端上传函数之后图片能够上传,但是回调函数不执行,而且前端还会报错,如下:
HTML代码:
<div class="col-xs-12">
<input type="file" name="img" id="img" value="" multiple="multiple"
data-show-preview="true" />
</div>
JS代码:
$("#img").fileinput({
language : 'zh',
uploadUrl : "uploadImg",
showCaption : true,
showRemove : true,
uploadAsync : true,
showPreview : true,
textEncoding : "UTF-8",
autoReplaceBoolean : false,
});
$("#img").on('fileuploaded', function(event, data, previewId, index) {
alert(data);
});
$("#img").on('filebatchuploadsuccess', function(event, data, previewId, index) {
alert(data);
});
$("#img").on('fileerror', function(event, data, msg) {
alert(data);
});
javaAction:
public void uploadImg(){
String imgPath=UploadUtil.uploadImg(getImg(), getImgFileName());
HttpServletResponse response=ServletActionContext.getResponse();
PrintWriter out=null;
String jsonString="{'imgUrl':'"+imgPath+"'}";
try {
out=response.getWriter();
out.print(jsonString);
out.flush();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
UploadUtil代码:
public static String uploadImg(File img,String imgFileName) {
String folderPath="";
String imgUrl = "";//返回的图片地址
HttpServletRequest request = ServletActionContext.getRequest();//获取request对象
StringBuffer url1 = request.getRequestURL();//获取当前页面的URL
String tempContextUrl1 = url1.delete(url1.length() - request.getRequestURI().length(), url1.length())
.append("/").toString();//当前页面的URL减去当前页面的地址为http头
String p = request.getRealPath("/img/upload");//得到站点的绝对地址
String path;
String fileName = UUID.randomUUID().toString() + imgFileName.substring(imgFileName.lastIndexOf("."));//生成随机图片名称
int length;
path = p + "\\" + fileName;//图片地址全
try {
FileOutputStream fos = new FileOutputStream(path);
FileInputStream fis = new FileInputStream(img);
byte[] buffer = new byte[1024 * 1024 * 20];
while ((length = fis.read(buffer)) > 0) {
fos.write(buffer, 0, length);
}
fos.close();
fis.close();
imgUrl = tempContextUrl1 + request.getContextPath() + "/img/upload/" + fileName;
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return imgUrl; // 返回url地址
}
图片上传执行之后图片能够上传,但是好像返回数据出了点问题,而且也不执行回调函数,求助各位大神,感谢!!!
<p>图中给出了问题,说是json格式有问题出现了'(单引号),试试双引号呗,大兄弟。</p>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。