java 项目使用 ajaxfileupload

原创
2018/12/07 11:23
阅读数 744

html

    <style>
        #oDiv {
            height: 200px;
            width: 200px;
            border: 1px solid #000;
            text-align: center;
            margin-bottom: 10px;
        }
    </style>
    <div class="all">
        <div id="oDiv">
            <img src="" id="showPic" style="height:100%;width:100%" />
        </div>
        <input type="file"  id="oInput" name="file" onchange="ShopPictureInfoDlg.upload_cover(this)"/>
    </div>


<!-- form 表单里面的imageUrl录入框 实际是要隐藏的 -->
<input id="imageUrl" name="图片url" type="text" name="ImageUrl" placeholder="defaultPath" value=""/>

js:

注意里面的complete 设置为false ,因为该项目的ajax属性设置了需要执行compele的方法,而配置的环境却不可以解析,回有关于

XMLHttpRequest getResponseHeader() 没有这个function的错误

//具体的上传图片方法
function ajax_upload(feid, callback, ext) {
    if (image_check(feid)) {
        $.ajaxFileUpload({
            url: Feng.ctxPath +"/shop/uploadImage",
            secureuri : false,
            fileElementId: feid,
            dataType: 'json',
            data: {fileType: ext},//增加推送的属性
            type: 'post',
            async: true,
            complete: false,
            success:
                function (data) {
                    if (data.success){
                        $("#imageUrl").val(data.imagePath);
                        $("#showPic").attr("src", data.imagePath);
                    }
                    alert(data.message);
                },
            error:
                function (data) {
                    console.log(data);
                    console.log("error");
                }
        });
    }
};

 ajaxfileupload:

修改了里面uploadHttpData type="json", 由于返回的是application/json ,所以获取的数据回带上 <pre 标签,不是标准的xml 所以要做数据替换

            data = jQuery.parseJSON(jQuery(data).text());
            // eval("data = " + data);

/**
 * 初始化详情对话框
 */
var ShopPictureInfoDlg = {
    shopPictureInfoData : {},
    validateFields: {
        shopId: {
            validators: {
                notEmpty: {
                    message: '店铺id不能为空'
                }
            }
        },
        imageUrl: {
            validators: {
                notEmpty: {
                    message: '图片url不能为空'
                }
            }
        },
    }
};

/**
 * 清除数据
 */
ShopPictureInfoDlg.clearData = function() {
    this.shopPictureInfoData = {};
}

/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
ShopPictureInfoDlg.set = function(key, val) {
    this.shopPictureInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
    return this;
}

/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
ShopPictureInfoDlg.get = function(key) {
    return $("#" + key).val();
}

/**
 * 关闭此对话框
 */
ShopPictureInfoDlg.close = function() {
    parent.layer.close(window.parent.ShopPicture.layerIndex);
}

/**
 * 收集数据
 */
ShopPictureInfoDlg.collectData = function() {
    this
    .set('id')
    .set('shopId')
    .set('imageUrl')
    .set('noteText')
    ;
}
/**
 * 验证数据是否为空
 */
ShopPictureInfoDlg.validate = function () {
    $('#shopPictureForm').data("bootstrapValidator").resetForm();
    $('#shopPictureForm').bootstrapValidator('validate');
    return $("#shopPictureForm").data('bootstrapValidator').isValid();
};
/**
 * 提交添加
 */
ShopPictureInfoDlg.addSubmit = function() {

    this.clearData();
    this.collectData();
    if (!this.validate()) {
        return;
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/shopPicture/add", function(data){
        Feng.success("添加成功!");
        window.parent.ShopPicture.table.refresh();
        ShopPictureInfoDlg.close();
    },function(data){
        Feng.error("添加失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.shopPictureInfoData);
    ajax.start();
}

/**
 * 提交修改
 */
ShopPictureInfoDlg.editSubmit = function() {

    this.clearData();
    this.collectData();
    if (!this.validate()) {
        return;
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/shopPicture/update", function(data){
        Feng.success("修改成功!");
        window.parent.ShopPicture.table.refresh();
        ShopPictureInfoDlg.close();
    },function(data){
        Feng.error("修改失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.shopPictureInfoData);
    ajax.start();
}


/**
 * 子窗口获取父窗口的值
 * @param id
 */
function init() {
    // 初始化内容
    var url = parent.document.URL;
    var shopId = $("#shopId",window.parent.document).text();
    if(url.indexOf("detail") != -1){
        $("#shopId").val(shopId);
    }
};
init();

/**
 * 图片上传
 */
ShopPictureInfoDlg.upload_cover = function(obj) {
    //回传后缀
    var filePath = $("input[name='file']").val();
    var extStart = filePath.lastIndexOf(".");
    var ext = filePath.substring(extStart, filePath.length).toUpperCase();

    ajax_upload(obj.id, function (data) { //function(data)是上传图片的成功后的回调方法
        var isrc = data.relatPath.replace(/\/\//g, '/'); //获取的图片的绝对路径
        $('#image').attr('src', basePath + isrc).data('img-src', isrc); //给<input>的src赋值去显示图片
    }, ext);
}

//具体的上传图片方法
function ajax_upload(feid, callback, ext) {
    if (image_check(feid)) {
        $.ajaxFileUpload({
            url: Feng.ctxPath +"/shop/uploadImage",
            secureuri : false,
            fileElementId: feid,
            dataType: 'json',
            data: {fileType: ext},//增加推送的属性
            type: 'post',
            async: true,
            complete: false,
            success:
                function (data) {
                    if (data.success){
                        $("#imageUrl").val(data.imagePath);
                        $("#showPic").attr("src", data.imagePath);
                    }
                    alert(data.message);
                },
            error:
                function (data) {
                    console.log(data);
                    console.log("error");
                }
        });
    }
};
function image_check(feid) { //自己添加的文件后缀名的验证
    var img = document.getElementById(feid);
    return /.(jpg|png|gif|bmp)$/.test(img.value) ? true : (function () {
        Feng.info('图片格式仅支持jpg、png、gif、bmp格式,且区分大小写。');
        return false;
    })();
}

$(function() {
    Feng.initValidator("shopPictureForm", ShopPictureInfoDlg.validateFields);
});

contrller:

只是为了返回数据,没写实质性文件保存

    /**
     * 图片上传
     */
    @RequestMapping(method = RequestMethod.POST  ,value = "/uploadImage" )
    @ResponseBody
    public Object UploadImage(@RequestPart("file") MultipartFile file){
        //文件上传暂时没找到显示返回自定义异常方法,使用正常数据返回
        Map<String,Object> result = new HashMap<>();
        String path = Class.class.getClass().getResource("/").getPath();
        path = path.replace("/target/classes/","/src/main/webapp/static/img/logo.png");
        result.put("success",true);
        result.put("message","上传成功!");
        result.put("imagePath",path);
        return result;
    }

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部