*1.bootstrap-fileinput 插件git下载地址
2.解决使用bootstrap-fileinput得到返回值
rush:js;">
$("#file-0a").fileinput({
uploadUrl : "/upload_img",//上传图片的url
allowedFileExtensions : [ 'jpg','png','gif' ],overwriteInitial : false,maxFileSize : 1000,//上传文件最大的尺寸
maxFilesNum : 1,//上传最大的文件数量
initialCaption: "请上传商家logo",//文本框初始话value
//allowedFileTypes: ['image','video','flash'],slugCallback : function(filename) {
return filename.replace('(','_').replace(']','_');
}
});
rush:js;">
$('#file-0a').on('fileuploaded',function(event,data,previewId,index) {
var form = data.form,files = data.files,extra = data.extra,response = data.response,reader = data.reader;
console.log(response);//打印出返回的json
console.log(response.paths);//打印出路径
});
jsp页面
rush:js;">
logo">
其中data-min-file-count=”1”是指文件上传最低数量
3.服务端代码
Bean
rush:js;">
import java.util.List;
public class Picture {
private List paths;
public List getPaths()
{
return paths;
}
public void setPaths(List paths)
{
this.paths = paths;
}
}
Controller
rush:js;">
@ResponseBody
@RequestMapping(value="upload_img",method=RequestMethod.POST)
public Picture uploadImage(@RequestParam multipartfile[] upload_logo) throws IOException{
log.info("上传图片");
Picture pic = new Picture();
List paths = new ArrayList();
String dir = UploadUtil.getFolder();
for(multipartfile myfile : upload_logo){
if(myfile.isEmpty()){
log.info("文件未上传");
}else{
log.info("文件长度: " + myfile.getSize());
log.info("文件类型: " + myfile.getContentType());
log.info("文件名称: " + myfile.getName());
log.info("文件原名: " + myfile.getoriginalFilename());
log.info("========================================");
//上传文件 返回路径
String path = UploadUtil.writeFile(myfile.getoriginalFilename(),dir,myfile.getInputStream());
log.info("文件路径:"+path);
paths.add(path);
}
}
pic.setPaths(paths);
return pic;
}
uploadUtil
rush:js;">
private static final Logger log = LoggerFactory.getLogger(UploadUtil.class);
private UploadUtil() {
}
private static SimpleDateFormat fullSdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
private static SimpleDateFormat folder = new SimpleDateFormat(
"yyyy" + File.separator + "MM" + File.separator + "dd");
/**
* 返回yyyy File.separator MM File.separator dd格式的字符串
*
* @return
*/
public static String getFolder() {
return folder.format(new Date());
}
/**
* 文件上传
*
* @param srcName
* 原文件名
* @param dirName
* 目录名
* @param input
* 要保存的输入流
* @return 返回要保存到数据库中的路径
*/
public static String writeFile(String srcName,String dirName,InputStream input) throws IOException {
log.info(srcName);
// 取出上传的目录,此目录是tomcat的server.xml中配置的虚拟目录
String uploadDir = ContextUtil.getSysProp("upload_dir");//设置你上传路径
// 取出虚拟目录的访问路径
String virtualDir = ContextUtil.getSysProp("virtual_dir");//设置你虚拟目录访问路径
// 重命名文件
if (null != srcName) {
srcName = srcName.substring(srcName.indexOf("."));
} else {
srcName = ".jpg";
}
String filename = "";
// 得到要上传的文件路径
filename = uploadDir + File.separator + dirName + File.separator + fullSdf.format(new Date()) + srcName;
// 得到将要保存到数据中的路径
String savePath = filename.replace(uploadDir,"");
savePath = virtualDir + savePath.replace("\\","/");
File file = new File(filename);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
FileOutputStream fos = new FileOutputStream(file);
// 一次30kb
byte[] readBuff = new byte[1024 * 30];
int count = -1;
while ((count = input.read(readBuff,readBuff.length)) != -1) {
fos.write(readBuff,count);
}
fos.flush();
fos.close();
input.close();
return savePath;
}
4.解决上传时候遇到的一些问题
如遇见点击上传之后,进度条显示为100%,jsp页面显示[Object,obejct],那么注意你后台返回的是否为json对象。
以上所述是小编给大家介绍的Bootstrap的fileinput插件实现多文件上传的方法。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。