17、【 商品管理模塊開發】——后臺商品圖片的springmvc和富文本上傳以及ftp文件服務器的開發...

1、FTP文件服務器的搭建:

軟件下載:ftpserver;

img_d3463456a5fabc2022fa8e071a9a0f5e.png
image.png

瀏覽器訪問:ftp://127.0.0.1/

img_487995788bafbe8ba5bac37a5afe2a20.png
image.png

點擊任意一個文件,就可以看到我們圖片啦,前提是前面指定的目錄里面有圖片文件~


img_98521e030f50f36d68dfcd1987e1d393.png
image.png

2、接口編寫:

1、springmvc方法上傳文件:

ProductManageController:中編寫下面方法:
*Controller:

   //springmvc文件上傳接口@RequestMapping("upload.do")@ResponseBodypublic ServerResponse upload(HttpSession session, @RequestParam(value = "upload_file",required = false) MultipartFile file, HttpServletRequest request){User user=(User) session.getAttribute(Const.CURRENT_USER);if(user==null){return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),"未登錄,請先登錄");}if(iUserService.checkAdminRole(user).isSuccess()){String path=request.getSession().getServletContext().getRealPath("upload");String targetFileName=iFileService.upload(file,path);String url= PropertiesUtil.getProperty("ftp.server.http.prefix")+targetFileName;Map fileMap= Maps.newHashMap();fileMap.put("uri",targetFileName);fileMap.put("url",url);return ServerResponse.createBySuccess(fileMap);}else {return ServerResponse.createByErrorMessage("當前登錄者不是管理員,無權限操作");}}

這行代碼需要注意的是@RequestParam(value = "upload_file",required = false) MultipartFile file參數的傳入,對應的是相關文件類屬性。

public ServerResponse upload(HttpSession session, @RequestParam(value = "upload_file",required = false) MultipartFile file, HttpServletRequest request)

*Service:

    //文件上傳方法實現String upload(MultipartFile file, String path);

*ServiceImpl:

//文件上傳方法實現public String upload(MultipartFile file,String path){String fileName=file.getOriginalFilename();//擴展名//abc.jpg 我們要拿到jpgString fileExtensionName=fileName.substring(fileName.lastIndexOf(".")+1);//防止文件被覆蓋,我們使用UUID生產的字符串作為文件名,這樣用戶上傳同名的文件就不會被覆蓋了String uploadFileName= UUID.randomUUID().toString()+"."+fileExtensionName;logger.info("開始上傳文件...上傳文件的文件名:{},上傳的路徑:{},新文件名:{}",fileName,path,uploadFileName);//創建文件夾File fileDir=new File(path);if(!fileDir.exists()){fileDir.setWritable(true);fileDir.mkdirs();}//上傳文件File targetFile=new File(path,uploadFileName);try {file.transferTo(targetFile);//文件上傳成功//將targetFile上傳到我們的文件服務器FTPUtil.uploadFile(Lists.newArrayList(targetFile));//文件已經上傳到FTP服務器上//上傳文件到文件服務器之后,刪除我們Tomcat里面的文件,防止存儲文件過多targetFile.delete();} catch (IOException e) {logger.error("上傳文件異常",e);return null;}return targetFile.getName();}

由于是直接講文件上傳到文件服務器,所以不涉及到數據庫的操作~

2、富文本上傳:

富文本我們選擇的是simditor

img_b636b22023db4a93925446b491c65fc5.png
image.png

相關文檔位置:
https://simditor.tower.im/docs/doc-config.html#anchor-defaultImage

img_52c68d923c3f575ff0050693a8f27cb7.png
image.png
    //富文本上傳接口@RequestMapping("richtext_img_upload.do")@ResponseBodypublic Map richtextImgUpload(HttpSession session, @RequestParam(value = "upload_file",required = false) MultipartFile file, HttpServletRequest request, HttpServletResponse response){Map resultMap=Maps.newHashMap();User user=(User) session.getAttribute(Const.CURRENT_USER);if(user==null){resultMap.put("success",false);resultMap.put("msg","未登錄,請先登錄");return resultMap;}//富文本中對于返回值有自己的要求,我們使用是simditor 所以要按照simditor的要求進行返回if(iUserService.checkAdminRole(user).isSuccess()){String path=request.getSession().getServletContext().getRealPath("upload");String targetFileName=iFileService.upload(file,path);if(StringUtils.isBlank( targetFileName)){resultMap.put("success",false);resultMap.put("msg","上傳失敗");return  resultMap;}String url= PropertiesUtil.getProperty("ftp.server.http.prefix")+targetFileName;resultMap.put("success",true);resultMap.put("msg","上傳成功");resultMap.put("ile_path",url);response.addHeader("Access-Control-Allow-Headers","X-File-Name");return resultMap;}else {resultMap.put("success",false);resultMap.put("msg","當前登錄者不是管理員,無權限操作");return resultMap;}}

至于上傳的upload方法我們還是使用springmvc中使用的方法~

3、測試接口:

接下來就是編寫一個頁面測試這兩個方法啦
index.jsp頁面中編寫下面代碼:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<html>
<body>
<h2>Hello World!</h2>springmvc上傳文件<form name="form1" action="/manage/product/upload.do" method="post" enctype="multipart/form-data"><input type="file" name="upload_file"><input type="submit" value="springmvc上傳文件">
</form>富文本圖片上傳
<form name="form1" action="/manage/product/richtext_img_upload.do" method="post" enctype="multipart/form-data"><input type="file" name="upload_file"><input type="submit" value="富文本上傳文件">
</form>
</body>
</html>

1、springmvc測試:
1


img_3c33363e97d1d260ca339a5537dfdb20.png
image.png

2


img_d81fe203f90a496c0614c864703f45c8.png

3


img_f6e6b285bdd24b830dbfba7f9c38d267.png
image.png

2、符文本測試:
1
img_7cec4bdc0dfe65e197f8a77bc52e82e8.png
image.png

2


img_16696ec0ac31cd5074779d6fdfc7b4c4.png

3
img_cb79ec811ab02d0329f658bb0cc4c74c.png
image.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277098.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277098.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277098.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

我們常說……

從過完元旦到現在&#xff0c;乖乖在公司辦公的時間很少&#xff0c;好多時候都是在外地&#xff0c;或者是在路上、車上。有n多次&#xff0c;乖乖一天至少坐6個小時的車&#xff0c;回到家里都是帶著一身的疲憊&#xff0c;雖然他并不表現出來&#xff0c;但是因為長時間坐車…

那些油管上高質量的學習編程的頻道 之一

國內確實有很多不錯的學習編程的網站或者個人博客&#xff0c;但是對于初學者&#xff0c;往往更希望獲得那種引導性的教學&#xff1a;即一步一步的教你跟著操作的教學。這種教學最好的方式當然就是視頻了。畢竟在Apple Podcast上超火爆的斯坦福教授iOS開發的課程也是這種形式…

SQL Server 2005 Express附加(Attach)的數據庫為“只讀”的解決方法

我的操作系統為Windows 2003 Server , 文件系統NTFS, 在SQL Server 2005 Express 上附加(Attach)從另外一臺電腦Copy過來的數據庫后&#xff0c;數據庫為“只讀”。如下圖&#xff1a; 解決辦法&#xff1a; 打開 SQL Server Configuration Manager, 打開SQL Server SQLEXPRESS…

[導入]blog年終小結

1. 2006-11-30 注冊了本域名thws.cn&#xff0c;喜歡的thw.com被注冊了&#xff0c;只好退而就其次了&#xff1b;2. 12-20在alexa上登陸站點&#xff0c;綜合排名從起初490多萬上升到現在的590327,下期566,880&#xff1b;3. 2007-1-11適逢google PR更新&#xff0c;PR值從0變…

Maven學習筆記(2) --mvn archetype:create 說明

前面一篇相對比較簡單。 看完前面的內容我們會來到實戰部分&#xff0c;也就是創建一個簡單的項目 1 mvn archetype:create -DgroupIdorg.sonatype.mavenbook.ch03 \ 2 -DartifactIdsimple \ 3 -DpackageNameorg.sonatype.mavenbook 于是我們得到了步入Maven領域的第一份打擊 真…

UI設計:C4D作品案例分享

中文名4D電影&#xff0c;外文名CINEMA 4D&#xff0c;研發公司為德國Maxon Computer&#xff0c;特點為極高的運算速度和強大的渲染插件&#xff0c;使用在電影《毀滅戰士》、《阿凡達》中&#xff0c;獲得貿易展中最佳產品’的稱號&#xff0c;前身為FastRay。CINEMA 4D擁有快…

又是一個人的情人節

又是一個人的情人節 上午送完弟弟返鄉的車&#xff0c;回家的心情也越來越迫切&#xff0c;很想立刻回到家里&#xff0c;和老爸老媽嘮叨嘮叨&#xff0c;和一年未見的堂兄弟一起喝喝酒&#xff0c;玩耍玩耍&#xff0c;那種心情真是沒有辦法形容&#xff0c;在我個人看來&…

C# Global.asax.cs 定時任務

定時執行更新Redis緩存操作 protected void Application_Start(object sender, EventArgs e) {Timer timer new Timer();timer.Enabled true;timer.Interval 3600000; //執行間隔時間,單位為毫秒; 這里實際間隔為1小時 timer.Start();timer.Elapsed new System.Timers.Ela…

給div拼接html 拼接字符串

簡單描述&#xff1a;拼接html 拼接字符串&#xff0c;說實話&#xff0c;拼接這種東西我自己弄&#xff0c;得花費很多時間&#xff0c;主要是轉義字符&#xff0c;單引號&#xff0c;雙引號這種小細節調整起來比較麻煩&#xff0c;一旦疏忽多了少了一個符號&#xff0c;頁面就…

P2587 [ZJOI2008]泡泡堂 神仙貪心

思路&#xff1a;貪心 提交&#xff1a;1次&#xff08;看了題解$QwQ$&#xff09; 題解&#xff1a; 若我方最弱可以干掉對方最弱&#xff0c;則干&#xff1b; 否則若我方最強可以干掉對方最強&#xff0c;則干&#xff1b; 否則若我方最弱與對方最強平手&#xff0c;則平&am…

LifeCycle源碼解讀

對于LifeCycle的簡單使用可以看上一篇文章&#xff1a;LiveDataViewModelRepository搭建MVVM 這篇文章主要是為了閱讀源碼&#xff0c;盡量深入閱讀&#xff0c;能力還是一般&#xff0c;見諒&#xff1a; LifeCycle的作用 解決onCreate等生命周期方法&#xff0c;由于各種原因…

Microsoft SQL Server 2005 Service Pack 2 已經可以下載

下載地址為http://www.microsoft.com/downloads/details.aspx?FamilyIDd07219b2-1e23-49c8-8f0c-63fa18f26d3a&DisplayLangzh-cn嘿嘿,這么快就SP2了 轉載于:https://www.cnblogs.com/lazerjulysky/archive/2007/03/04/663279.html

單點登錄(sso)入門

單點登錄的英文名叫做Single Sign On&#xff0c;簡稱SSO。 在以前&#xff0c;一般我們就單系統&#xff0c;所有的功能都在同一個系統上。 后來&#xff0c;我們為了合理利用資源和降低耦合性&#xff0c;于是把單系統拆分成多個子系統。 比如阿里系的淘寶和天貓&#xff0c;…

Cocopods的升級錯誤解決

2019獨角獸企業重金招聘Python工程師標準>>> 寫在前面&#xff1a; 這篇筆記的由來&#xff0c;是因為在這個周五下班后想起了之前 GitHub 上一個關于 iOS Charts 的 demo 仍處于未完待續的狀態。便想著完成了它&#xff0c;遂打開了該工程&#xff0c;開始用 pod 更…

XML 命名空間以及它們如何影響 XPath 和 XSLT (Extreme XML)

Dare Obasanjo Microsoft Corporation 2002 年 5 月 20 日 本文是有望長期發表的系列文章的第一篇&#xff0c;這些文章專門闡釋由 Microsoft 支持的 W3C XML 技術的更微妙的內容。盡管 XML 的核心仍相當簡單&#xff0c;但是圍繞它的技術已經變得日益復雜&#xff0c;而且其中…

帆軟報表(finereport)點擊事件對話框打開

點擊事件對話框打開iframe var iframe $("<iframe id001 name001 width100% height100% scrollingyes frameborder0>") // iframe參數的命名及寬高等iframe.attr("src", "http://192.168.100.17:8075/WebReport/ReportServer?reportlet1.cpt&…

部署虛擬環境

創建虛擬環境 導入Virtualenv虛擬環境模塊 pip install virtualenv python -m pip install virtualenv 創建虛擬環境 cd 項目文件夾 virtualenv 虛擬環境名 激活虛擬環境 cd 虛擬環境文件夾 運行 Scripts 目錄下的 activate 腳本 Scripts\activate 退出當前虛擬環境 Scripts\d…

走馬觀花:Visual Studio Code Name Orcas Mar07CTP /體驗DLINQ

不知道什么叫“Orcas”&#xff1f;簡單說應該就是下一版本的Visual Studio 吧。現在atlas&#xff0c;LINQ&#xff0c;WF之類東西&#xff0c;對于VS2005是單獨安裝的&#xff0c;Orcas應該是全內置吧。還有很多功能的增強&#xff0c;可以參考英文說明。閑話不說&#xff0c…

各種學習資源

C&#xff1a;http://huangdingjun.blog.163.com/ 網易博客 有好多關于C的博文 http://hi.baidu.com/dudiaodaoke/home獨釣刀客 vim&#xff1a;http://easwy.com/blog/ vim linux 牛人 http://www.swaroopch.com/notes/Vim_zh-cn:%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9A%84%E7%BC…

智課雅思詞匯---二十六、形容詞后綴-ble

智課雅思詞匯---二十六、形容詞后綴-ble 一、總結 一句話總結&#xff1a; assemble 英 [?semb(?)l] 美 [?s?mbl] vt. 集合&#xff0c;聚集&#xff1b;裝配&#xff1b;收集vi. 集合&#xff0c;聚集[ 過去式 assembled 過去分詞 assembled 現在分詞 assembling ] 詞根詞…