日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SSM整合Ueditor的上传图片功能常见错误解决办法

發布時間:2023/12/8 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SSM整合Ueditor的上传图片功能常见错误解决办法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

本文總結得不好,如果有人和我遇到同樣的問題,先別急著看我咋改的,因為,前面的是我昨天寫的,寫到后面,最后發現是路徑問題,這個路徑問題我搞了很久,很久,很久,今早起來我都覺得要放棄的時候,我又嘗試著改了一下那個controller的代碼里面的rootPath,改回原來的,居然,成功了,照片能上傳能顯示,但是在后臺測試輸出的路徑感覺很奇怪,但是既然能成功了,作為小菜鳥的我也不敢再輕易改動了。

其實網上的大部分的辦法都是可行的,如果換在自己項目上,感覺不行,那大部分都是路徑問題,建議下載源代碼,可以進去看看源代碼怎么寫的,可以輸出一下各種信息,讓你更了解在哪出了問題,我就是,不停的sysout,一直翻源代碼,我都覺得對這個源碼都熟悉了。

我總結了我自己出錯的兩個重點,一,json文件是否讀取到;二:路徑!路徑!路徑!這個不好說,要看你自己的項目,這個得自己摸索。加油,我耗時一周,終于配置成功了。抱歉,學藝不精,求不噴。

我的畢設也要用到富文本編輯器,我選擇了Ueditor,網上很多人也用了,有些改配置改得很簡單就成功了,有些還要修改源碼,我都試過了,按照網上的方式,上傳圖片終究配置不成功,之前我的配置是按照網上的,在這不詳細寫了,一搜一大把,這里主要是記錄我在網上查不到的解決辦法。

以為配置成功了,結果點擊上傳圖片就一直轉圈圈。

控制臺查看錯誤:

ueditor.all.js:24557 Uncaught ReferenceError: errorHandler is not defined
? ? at HTMLInputElement.<anonymous> (ueditor.all.js:24557)
(anonymous) @ ueditor.all.js:24557?

我按照網上改寫的controller代碼

@RequestMapping("/config")public void ueditorConfig(HttpServletRequest request, HttpServletResponse response) {System.out.println("edite 經過的request");response.setContentType("application/json");response.setHeader("ContentType", "text/html");String action = request.getParameter("action");System.out.println("action:"+action);String rootPath = request.getSession().getServletContext().getRealPath("/");System.out.println("rootPath:"+rootPath);try {request.setCharacterEncoding("utf-8");String exec = new ActionEnter(request, rootPath).exec();System.out.println("exec"+exec);//輸出了錯誤信息PrintWriter writer = response.getWriter();writer.write(exec);writer.flush();writer.close();} catch (IOException e) {System.out.println("edite 經過的request出錯..");}}

發現控制臺輸出:

edite 經過的request
action:config
rootPath:/Users/chenjiafeng/IdeaProjects/TSS/target/TSS-1.0-SNAPSHOT/
exec{"state": "\u914d\u7f6e\u6587\u4ef6\u521d\u59cb\u5316\u5931\u8d25"}
edite 經過的request

\u914d\u7f6e\u6587\u4ef6\u521d\u59cb\u5316\u5931\u8d25。百度這句話的意思是配置文件初始化失敗

又百度了很久,我猜測,是不是讀取不到config.json,于是我在源碼下測試:

(怎么進入方法這應該都懂的,修改源碼的前提是把源碼下載過來,網上的都有教程)

進入ActionEnter-->

在進入ConfigManager-->

找到該方法,輸出一下這個getConfigPath看看,重啟服務器,重新運行,點擊上傳圖片,控制臺輸出這些信息:

edite 經過的request
action:config
rootPath:/Users/chenjiafeng/IdeaProjects/TSS/target/TSS-1.0-SNAPSHOT/
getConfigPath:/Users/chenjiafeng/IdeaProjects/TSS/target/TSS-1.0-SNAPSHOT/config.json
exec{"state": "\u914d\u7f6e\u6587\u4ef6\u521d\u59cb\u5316\u5931\u8d25"}

這問題就出來了,果然。路徑出錯,我這項目路徑沒有這個config.json文件,我就說這個rootPath路徑咋怪怪的,我找找該怎么改這個路徑。 我看看是路徑那部分出了錯,然后在剛剛那個方法輸出得更細一點,醬:

?

private String getConfigPath () {System.out.println("getConfigPath:"+this.parentPath + File.separator + ConfigManager.configFileName);System.out.println("this.parentPath:"+this.parentPath);System.out.println("File.separator:"+File.separator);System.out.println("ConfigManager.configFileName:"+ConfigManager.configFileName);return this.parentPath + File.separator + ConfigManager.configFileName;}

又重啟又運行,控制臺輸出以下信息:

edite 經過的request
action:config
rootPath:/Users/chenjiafeng/IdeaProjects/TSS/target/TSS-1.0-SNAPSHOT/
getConfigPath:/Users/chenjiafeng/IdeaProjects/TSS/target/TSS-1.0-SNAPSHOT/config.json
this.parentPath:/Users/chenjiafeng/IdeaProjects/TSS/target/TSS-1.0-SNAPSHOT
File.separator:/
ConfigManager.configFileName:config.json
exec{"state": "\u914d\u7f6e\u6587\u4ef6\u521d\u59cb\u5316\u5931\u8d25"}

哦豁,看見沒,這個父路徑的錯?this.parentPath。那這個this.parentPath哪來的,我找找。

.......(此處過了很久,沒改成功,但是,我直接在方法上面寫了那個文件的所在路徑,hehehehehe,像這樣:)

(能想到這個辦法,我可能是傻了吧。。。)然后,運行,我去,居然可以顯示了,

沒上傳成功,控制臺輸出:

exec{"state": "\u672a\u627e\u5230\u4e0a\u4f20\u6570\u636e"}. ? 意思也是“未找到上傳數據”

到這真正證實了,就是json文件沒讀到,現在讀到了,又有新的問題了(此處又過了很久)。未找到數據的原因是spring攔截了。所以要寫一個繼承CommonsMultipartResolver的子類,放行。百度了很久,終于找到一篇是ssm的攔截,超級感謝他!

這是這位作者的鏈接:https://blog.csdn.net/qq_38350609/article/details/89212496

這個類是這樣寫的:

package com.mandy.filter;import javax.servlet.http.HttpServletRequest;public class CommonMultipartResolver extends org.springframework.web.multipart.commons.CommonsMultipartResolver {public boolean isMultipart(HttpServletRequest request){System.out.println("進入isMultipart");String uri=request.getRequestURI();System.out.println(uri);if(uri!=null&&uri.indexOf("/config")>0){System.out.println("CommonsMultipartResolver放行");return false;}System.out.println("CommonsMultipartResolver攔截");return super.isMultipart(request);} }

并且要在springmvc.xml配置:(其實我之前已經有個multipartResolver,但是為了測試,先注釋掉了)

<bean id="multipartResolver"class="com.mandy.filter.CommonMultipartResolver"><!-- set the max upload size100MB --><property name="maxUploadSize"><value>104857600</value></property><property name="maxInMemorySize"><value>4096</value></property><property name="defaultEncoding"><value>utf-8</value></property></bean>

然后,再次運行,哈哈哈哈哈

?

顯示上傳成功,但是....??????

圖片顯示不了???好吧,發現我的控制臺輸出:

進入isMultipart
/TSS/TSS/TSS/upload/20200207/1581058492731010505.jpeg
CommonsMultipartResolver攔截

Failed to load resource: the server responded with a status of 404 () (這是谷歌瀏覽器的錯誤信息,也就是說,獲取不到圖片,那就是路徑問題)

這路徑一看就不對,而且也沒放行。不過,確實成功上傳了,雖然不是我想要的路徑


這是一條分割線,中間我嘗試修改了很久的代碼,因為改得太多了,我都不知道要從何說起,但是現在配置成功了,我就把我成功的代碼貼上去,大家好參考參考。

controller的代碼:

@RequestMapping("/config")public void ueditorConfig(HttpServletRequest request, HttpServletResponse response) {response.setContentType("application/json");response.setHeader("ContentType", "text/html");String action = request.getParameter("action");System.out.println("action:" + action);String rootPath = request.getSession().getServletContext().getRealPath("/");try {request.setCharacterEncoding("utf-8");String exec = new ActionEnter(request, rootPath).exec();System.out.println("exec" + exec);//輸出了錯誤信息PrintWriter writer = response.getWriter();writer.write(exec);writer.flush();writer.close();} catch (IOException e) {System.out.println("edite 經過的request出錯..");}}

config.json配置(就是修改了圖片訪問前綴和保存路徑)

?

其他都和網上教程一樣的,大家自行百度,以下是配置好的,能顯示圖片了。

?

總結

以上是生活随笔為你收集整理的SSM整合Ueditor的上传图片功能常见错误解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。