富文本上傳圖片 java 代碼 圖片路徑返回頁面是undefined的問題

頁面採用Layui的富文本格式,之前上傳的java代碼是將數據以json的字符串形式傳給頁面,沒有問題,代碼如下
@ResponseBody
    @RequestMapping(value = "/uploadFile")
    public String  uploadFile(HttpServletRequest request, @Param("file") MultipartFile file) throws IOException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSS");
        String res = sdf.format(new Date());
        //服務器上使用
         String rootPath =request.getServletContext().getRealPath("/uploads/");//target的目錄
//        //本地使用
//        String rootPath = "/Users/liuyanzhao/Documents/uploads/";
        //原始名稱
        String originalFilename = file.getOriginalFilename();
        //新的文件名稱
        String newFileName = res + originalFilename.substring(originalFilename.lastIndexOf("."));
        //創建年月文件夾
        Calendar date = Calendar.getInstance();
        File dateDirs = new File(date.get(Calendar.YEAR)
                + File.separator + (date.get(Calendar.MONTH) + 1));
        //新文件
        File newFile = new File(rootPath + File.separator + dateDirs + File.separator + newFileName);
        //判斷目標文件所在的目錄是否存在
        if (!newFile.getParentFile().exists()) {
            //如果目標文件所在的目錄不存在,則創建父目錄
            newFile.getParentFile().mkdirs();
        }
        System.out.println(newFile);
        //將內存中的數據寫入磁盤
        file.transferTo(newFile);
        //完整的url
        String fileUrl = "/basaltsign/uploads/" + date.get(Calendar.YEAR) + "/" + (date.get(Calendar.MONTH) + 1) + "/" + newFileName;
        Map<String, Object> map = new HashMap<String, Object>();
        Map<String, Object> map2 = new HashMap<String, Object>();
        map.put("code", 0);//0表示成功,1失敗
        map.put("msg", "上傳成功");//提示消息
        map.put("data", map2);
        map2.put("src", fileUrl);//圖片url
        map2.put("title", newFileName);//圖片名稱,這個會顯示在輸入框裏
        String result = new JSONObject(map).toString();

        //System.out.println("map=="+map);
        return result;
    

後來項目修改幾個功能,偶然測試了一下上傳圖片結果發現result 返回給頁面的數據格式變樣了 不是標準的json格式了

result=={"msg":"上傳成功","code":0,"data":"{src=/basaltsign/uploads/2018/4/20180425171450856.jpg, title=20180425171450856.jpg}"}

仔細看會發現 data對應的值不是json格式的而是雙引號括起來的字符串。所以頁面是收不到值的。我很納悶 我什麼都沒改 爲什麼json格式變樣了?這讓我怎麼辦。後來我無意間將 返回的result 變成map格式。代碼如下

 /**
     *    富文本 上傳文件
     */
    @ResponseBody
    @RequestMapping(value = "/uploadFile")
    public Map uploadFile(HttpServletRequest request, @Param("file") MultipartFile file) throws IOException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSS");
        String res = sdf.format(new Date());
        //服務器上使用
         String rootPath =request.getServletContext().getRealPath("/uploads/");//target的目錄
//        //本地使用
//        String rootPath = "/Users/liuyanzhao/Documents/uploads/";
        //原始名稱
        String originalFilename = file.getOriginalFilename();
        //新的文件名稱
        String newFileName = res + originalFilename.substring(originalFilename.lastIndexOf("."));
        //創建年月文件夾
        Calendar date = Calendar.getInstance();
        File dateDirs = new File(date.get(Calendar.YEAR)
                + File.separator + (date.get(Calendar.MONTH) + 1));
        //新文件
        File newFile = new File(rootPath + File.separator + dateDirs + File.separator + newFileName);
        //判斷目標文件所在的目錄是否存在
        if (!newFile.getParentFile().exists()) {
            //如果目標文件所在的目錄不存在,則創建父目錄
            newFile.getParentFile().mkdirs();
        }
        System.out.println(newFile);
        //將內存中的數據寫入磁盤
        file.transferTo(newFile);
        //完整的url
        String fileUrl = "/basaltsign/uploads/" + date.get(Calendar.YEAR) + "/" + (date.get(Calendar.MONTH) + 1) + "/" + newFileName;
        Map<String, Object> map = new HashMap<String, Object>();
        Map<String, Object> map2 = new HashMap<String, Object>();
        map.put("code", 0);//0表示成功,1失敗
        map.put("msg", "上傳成功");//提示消息
        map.put("data", map2);
        map2.put("src", fileUrl);//圖片url
        map2.put("title", newFileName);//圖片名稱,這個會顯示在輸入框裏
        //String result = new JSONObject(map).toString();

        System.out.println("map=="+map);
        return map;
    } 

返回給頁面數據變成了這樣

map=={msg=上傳成功, code=0, data={src=/basaltsign/uploads/2018/4/20180425172004551.jpg, title=20180425172004551.jpg}}

你會發現data 的值 沒有了雙引號。

現在有個問題我就鬱悶了,之前發佈到服務器的項目是以String格式返回數據的目前是正常還能上傳圖片。現在更新的項目只能以map格式返回數據才能正常上傳。百思不得其解,有知道的大神不防告訴小弟

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章