模态框图片上传(好看)

1.首先在html页面的model中写如下代码:

<div>
	<label class="col-sm-4 ">广告图片:</label>
	<div class="col-sm-8">
		<img  id="carPicImg" name="carPicImg" width="100%" onclick="fileSelect()"/>
    </div>
 </div>
 <div id="fileDiv" hidden="hidden">
		<label class="col-sm-2 control-label">图片上传:</label>
    	 <div class="col-sm-10">
       	 	<input type="file" id="file" name="file" />
  		</div>
 </div>

2.在js中写:
//页面初始化:

$(document).ready(function () {
//模态框图片上传,选择图片,前台显示
	document.querySelector("#file").onchange = function(){
   	console.log(this.value);
    document.querySelector("#carPicImg").src = getFileUrl(this.id);
    searchList()
};
});

//列表回显部分代码:

var _columns = [
    {
        "data": "pic",
        render: function (data, type, row, meta) {
            if(data){
                return '<img src="'+getCarModelImgBaseUrl()+data+'" class="carPic" />';
            }else{
                return "——";
            }
        }
    },
    {
    data: 'commond',
    render: function (data, type, row, meta) {
        var btnStr = "";
        btnStr = btnStr + '<button type="button" class="btn btn-outline btn-info" style="margin-right: 15px" onclick="editModal(\'' + meta.row + '\')">编辑</button>';
        btnStr = btnStr + ' <button type="button" class="btn btn-outline btn-danger" onclick="doDel(\'' + meta.row + '\')">删除</button>';
        return btnStr;
    },
    "orderable" :false
}
];




function searchList() {
var adSupplier = $("#adSupplierSearch").val();
var searchArray = {
    "adSupplier":adSupplier
};

var buttons = [];
var columnOrder = {};
dataTableMain("advertisementTable","/advertisement/getAdList", _columns, buttons, searchArray,columnOrder);

}

//重点是以下函数

/*图片上传*/
//点击图片关联点击文件上传组件
function fileSelect(){
    $("#file").click();
}

//获取本地需上传的图片路径,预览所选图片
function getFileUrl(sourceId) {
    var url;
    if (navigator.userAgent.indexOf("MSIE")>=1) { // IE
        url = document.getElementById(sourceId).value;
    } else if(navigator.userAgent.indexOf("Firefox")>0) { // Firefox
        url = window.URL.createObjectURL(document.getElementById(sourceId).files.item(0));
    } else if(navigator.userAgent.indexOf("Chrome")>0) { // Chrome
        url = window.URL.createObjectURL(document.getElementById(sourceId).files.item(0));
    }
    return url;
}

function getCarModelImgBaseUrl(){
    return "http://39.105.31.168/shareCarPic";
}

3.在对应controller加

	 Map<String, Object> map = new HashMap<>();
	 String pic = "";
	 Map fileMap = uploadServiceImpl.upload(request, file);
	 if (fileMap != null && fileMap.size() > 0) {
		 pic = (String) fileMap.get("fileUrl");
	 }

contoller中全部代码

	 /**
     * 添加编辑
     */
    @RequestMapping(value = "/addAdList", method = RequestMethod.POST)
    @ResponseBody
    public JSONResult addSystemUser(HttpServletRequest request, TshareAdvertisement tshareAdvertisement, MultipartFile file) {
        try {
            Map<String, Object> map = new HashMap<>();
            String pic = "";
            Map fileMap = uploadServiceImpl.upload(request, file);
            if (fileMap != null && fileMap.size() > 0) {
                pic = (String) fileMap.get("fileUrl");
            }

            if (StringUtils.isEmpty(tshareAdvertisement.getId())) {
                //添加
                if (StringUtils.isEmpty(tshareAdvertisement.getAdSupplier())) {
                    return new JSONResult(null, 103, "请输入广告提供商");
                }
                tshareAdvertisement.setId(null);
                tshareAdvertisement.setAdSupplier(tshareAdvertisement.getAdSupplier());
                tshareAdvertisement.setCreateTime(new Date());
                tshareAdvertisement.setUpdateTime(new Date());
                tshareAdvertisement.setDelFlag("0");
                tshareAdvertisement.setUrl(pic);
                tshareAdvertisement.setPic(pic);
                tshareAdvertisementRepository.save(tshareAdvertisement);
            } else {
                //编辑
                Query query = new Query(Criteria.where("id").is(tshareAdvertisement.getId()));
                Update update = new Update();
                update.set("updateTime",new Date());
                update.set("url", pic);
                update.set("pic", pic);
                mongoTemplate.findAndModify(query, update, TshareAdvertisement.class);
            }

            return new JSONResult(map, 0, "成功");
        } catch (Exception e) {
            return new JSONResult(null, 101, "失败");
        }
    }

4.其中要写的upload类:

 //图片上传
    public Map<String, Object> upload(HttpServletRequest request, MultipartFile file) {
        Map<String, Object> map = new HashMap<String, Object>();
        try {
            if (file == null) {
                throw new IllegalArgumentException("参数异常");
            }
            String filePath = request.getSession().getServletContext().getRealPath("/") + "static/upload/";
            //创建上传目录
                //String filePath ="/static/upload/";

            Date time = new Date();
            SimpleDateFormat myFmt = new SimpleDateFormat("yyyy-MM-dd");
            String subPath = myFmt.format(time);
            filePath = filePath + subPath;

            File targetFolder = new File(filePath);
            if (!targetFolder.exists()) {
                targetFolder.mkdirs();
            }
        //生成文件名称
            String name = file.getOriginalFilename();
            String fileName = DigestUtils.md5Hex(time.getTime() + name.substring(0, name.lastIndexOf('.'))) + "." + name.substring(name.lastIndexOf(".") + 1);

       //创建接收对象
            File targetFile = new File(filePath, fileName);
        //保存
            BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(targetFile));
            out.write(file.getBytes());
            out.flush();
            out.close();
            String fileUrl = "/static/upload/" + myFmt.format(time) + "/" + fileName;
            map.put("fileUrl", fileUrl);
        LOGGER.info("上传了" + targetFolder + " " + fileName);
        return map;
    } catch (Exception e) {
        return map;
    }

}

finish!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值