图片的上传(一张图片的上传)

效果图:

jsp:
<script src="../..//platform/js/layer/layer.js"></script>
<script src="../../platform/js/ajax/ajaxfileupload.js"></script>

<script type="text/javascript">
$(function() {
//上传图片
    $("#cmsArticleImageFile").change(function() {
        var cmsArticleImageFile = $("#cmsArticleImageFile").val();
        if (cmsArticleImageFile == null || cmsArticleImageFile == "") {
            layer.tips('请选择图片!', '#mybutton', {tips : 3});
        } else {
            $.ajaxFileUpload({
                type : 'POST',
                url : 'imageUpload.do', //用于文件上传的服务器端请求地址
                secureuri : false, //是否需要安全协议,一般设置为false
                fileElementId : 'cmsArticleImageFile', //文件上传域的ID
                data : {
                    "folderType" : 'yaoWen'
                },
                dataType : 'json', //返回值类型 一般设置为json
                success : function(result, status) {//服务器成功响应处理函数
                    if (result.code == "ok") {
                        $('#cmsArticleImageFileSrc').prop('src',result.data.filePath);
                        $('#articleImage').val(result.data.filePath);
                    } else {
                        layer.alert(result.msg);
                    }
                }
            });
        }
    });
});
</script>

<td>
    <img id="cmsArticleImageFileSrc" style="height: 320px; width: 440px;" class="img-rounded" data-action="zoom"
     <c:if test="${!empty cmsArticle.articleImage}"> src="${cmsArticle.articleImage}" </c:if>
     <c:if test="${empty cmsArticle.articleImage}"> src="${pageContext.request.contextPath}/cms/image/imageNo.jpg" </c:if>>
     <input id="cmsArticleImageFile" name="cmsArticleImageFile" type="file" style="display:none;" accept="image/png, image/jpeg, image/gif, image/jpg" />
     <input id="articleImage" type="text" name="articleImage" value="${cmsArticle.articleImage}" style="display:none;"/>
     <input id="mybutton" type="button" class="btn btn-info" onclick="$('input[id=cmsArticleImageFile]').click();" value="浏览并上传"/>
 </td>
controller层:
/**
     * @category 封面图片上传
     * @param request
     * @param response
     */
    @RequestMapping(value = "/.../..../imageUpload", method = RequestMethod.POST)
    public void cmsImageUpload(HttpServletRequest request, HttpServletResponse response) {
        //文件类别
        String folderType = request.getParameter("folderType");
        try {
            //上传图片
            ClientResponse resp = uploadController.uploadAll(request, folderType);
            //
            resp.writeTo(response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

//调用方法:
    public ClientResponse uploadAll(HttpServletRequest request, //客户端请求
            String folderType//文件类别
    ) throws Exception {
        String basePath = "upload/" + folderType + "/";
        // 相对路径
        String filePath = request.getContextPath() + "/" + basePath;
        // 绝对路径
        String savePath = request.getServletContext().getRealPath("/") + basePath;
        long startTime = System.currentTimeMillis();
        // 将当前上下文初始化给 CommonsMutipartResolver (多部分解析器)
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
        if (!multipartResolver.isMultipart(request)) {
            return ClientResponse.createErrorResult("未找到文件", null);
        }
        ClientResponse resp = ClientResponse.createOkResult("ok");
        // 检查form中是否有enctype="multipart/form-data"
        if (multipartResolver.isMultipart(request)) {
            // 将request变成多部分request
            MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
            // 获取multiRequest 中所有的文件名
            Iterator<?> iter = multiRequest.getFileNames();
            while (iter.hasNext()) {
                // 一次遍历所有文件
                MultipartFile multipartFile = multiRequest.getFile(iter.next().toString());
                if (multipartFile != null) {
                    String originalName = multipartFile.getOriginalFilename();
                    // 检查扩展名
                    String fileExt = originalName.substring(originalName.lastIndexOf(".") + 1).toLowerCase();
                    if (!Arrays.<String> asList(extMap.get("file").split(",")).contains(fileExt)) {
                        return ClientResponse.createErrorResult("不允许的文件格式,只允许" + extMap.get("image") + "格式。", null);
                    }
                    String newName = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + "." + fileExt;
                    savePath += newName;
                    filePath += newName;
                    File dirFile = new File(savePath);
                    if (!dirFile.exists()) {
                        dirFile.mkdirs();
                    }
                    // 上传
                    multipartFile.transferTo(dirFile);
                    //源文件名
                    resp.addData("originalName", originalName);
                    //上传成后文件路径
                    resp.addData("filePath", filePath);
                }
            }
        }
        long endTime = System.currentTimeMillis();
        logger.println("上传运行时间:" + String.valueOf(endTime - startTime) + "ms");
        return resp;
    }

 

posted @ 2018-11-23 10:17  G-&-D  阅读(447)  评论(0编辑  收藏  举报