口香糖先森 2015-11-16 12:56 采纳率: 100%
浏览 1763
已采纳

有人用过ajaxfileupload上传图片,然后用Jcrop去截图的么?有个问题请教下!

我用AjaxFileUpload把图片传上去了,然后返回图片的上传路径到前台标签里,为什么返回的高度宽度都是0,然后自动生成的

下面的标签也没有获取到src属性
 /**
     * 文件上传
     * @param file
     * @param request
     * @param response
     * @return
     */
    @RequestMapping(value = "/uploadFile.do")
    public @ResponseBody Map<String,Object> uploadFile(@RequestParam(value = "apkFile") MultipartFile file,HttpServletRequest request, HttpServletResponse response) {
        Map<String,Object> resMap = new HashMap<String,Object>();
        //String classPath = this.getClass().getClassLoader().getResource("/").getPath();
        String classPath = request.getRealPath("/");
        if (file != null) {
            if (file.isEmpty()) {
                // 未选择文件
                resMap.put("status", "未选择文件");
            } else{
                // 文件原名称
                String originFileName = file.getOriginalFilename();
                try {
                    //这里使用Apache的FileUtils方法来进行保存
                    FileUtils.copyInputStreamToFile(file.getInputStream(),
                            new File(classPath+uploadDir, originFileName));
                    resMap.put("status","ok");
                    resMap.put("imgUrl","../"+uploadDir+originFileName);
                } catch (IOException e) {
                    resMap.put("status", "文件上传失败!");
                    e.printStackTrace();
                }
            }

        }
        return resMap;
    }

这是我的controller方法

 <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" href="../resources/css/jquery.Jcrop.min.css" type="text/css" />
<!-- <script src="../resources/js/common/jquery-1.11.3.js" type="text/javascript"></script> -->
<script src="http://edge1u.tapmodo.com/global/js/jquery.min.js"></script>
<script src="../resources/js/common/ajaxfileupload.js" type="text/javascript"></script>
<script src="../resources/js/fileupload.js" type="text/javascript"></script>
<script src="../resources/js/common/jquery.Jcrop.js"></script>
<title>上传头像</title>
</head>
<body>
    当前用户: ${userName}
    <input id="userId" value="${userId }" type="hidden" />
    <div id="addApkWindows">
        <div id="result"></div>
        上传文件: <input type="file" id="apkFile" name="apkFile" /> <input
            type="button" value="上传" onclick="ajaxFileUpload()" />
    </div>
    <form id="form_save" action="/user/save_portrait" style="display: none;">
        <input type="hidden" id="img_left" name="left" value="0"> <input
            type="hidden" id="img_top" name="top" value="0"> <input
            type="hidden" id="img_width" name="width" value="0"> <input
            type="hidden" id="img_height" name="height" value="0"> <input
            type="hidden" id="img_rd" name="rd" value="0">
    </form>
    <img src="" id="target" />
</body>
</html>

这是页面代码

 $(function() {
    $('#target').Jcrop();
});
function ajaxFileUpload() {
    //获取软件更新详情
    var apkIntroduce = $("#apkInfo").val();
    //开始上传文件时显示一个图片,文件上传完成将图片隐藏
    //$("#loading").ajaxStart(function(){$(this).show();}).ajaxComplete(function(){$(this).hide();});
    //执行上传文件操作的函数,使用encodeURI方法,防止传输中文字符的时候出现乱码
    var uploadUrl = encodeURI(encodeURI("uploadFile.do?apkIntroduce="
            + apkIntroduce));
    $.ajaxFileUpload({
        //处理文件上传操作的服务器端地址(可以传参数,已亲测可用)
        url : uploadUrl,
        //      url:basePath + "uploadApk.do?apkIntroduce="+apkIntroduce,
        secureuri : false, //是否启用安全提交,默认为false 
        fileElementId : 'apkFile', //文件选择框的id属性
        dataType : 'text', //服务器返回的格式,可以是json或xml等
        success : function(data, status) { //服务器响应成功时的处理函数
            var dataset = $.parseJSON(data);
            if (dataset.status == "ok") {
                $('#result').html("Apk上传成功");
                $('#target').attr("src", dataset.imgUrl);

            } else if (dataset.status == "parm_is_empty") {
                $('#result').html("没有选择APK!");
            } else {
                $('#result').html('Apk上传失败,请重试!!');
            }
        },
        error : function(data, status, e) { //服务器响应失败时的处理函数
            console.log(e);
            console.log(data);
            $('#result').html('APK上传失败,请重试!!');
        }
    });
    $('#target').Jcrop();
}


这是上传后的页面效果图

  • 写回答

1条回答 默认 最新

  • Go 旅城通票 2015-11-17 02:13
    关注

    图片加载完毕后在初始化jcrop,要不你图片src都没有那不是0
    js代码里面的$('#target').Jcrop();去掉

     <img src="" id="target" onload="$(this).Jcrop();" />
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试