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.mzph.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 ] 词根词…