程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> jcrop-有人用過ajaxfileupload上傳圖片,然後用Jcrop去截圖的麼?有個問題請教下!

jcrop-有人用過ajaxfileupload上傳圖片,然後用Jcrop去截圖的麼?有個問題請教下!

編輯:編程綜合問答
有人用過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();
}


這是上傳後的頁面效果圖

最佳回答:


圖片加載完畢後在初始化jcrop,要不你圖片src都沒有那不是0
js代碼裡面的$('#target').Jcrop();去掉

 <img src="" id="target" onload="$(this).Jcrop();" />
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved