需求:实现图片的上传和批量上传
技术:nginx,vsftpd,spring,springmvc,kindeditor,centos
说明:本章节内容主要是实现图片的上传功能。使用kindediter是为了更好的演示图片的上传,回显,批量效果。后台代码与kindediter没有直接关系,放心阅读。另外源码中有mybatis的jar,不用理会,本章内容用不到,是为后续内容做准备!
场景:用户将图片上传到tomcat服务器上,再由tomcat服务器通过ftp上传到nginx服务器上。
首先要攻破核心技术。通过单元测试实现图片上传的功能。
packagecom.itdragon.test;
importjava.io.fileinputstream;
importorg.apache.commons.net.ftp.ftp;
importorg.apache.commons.net.ftp.ftpclient;
publicclasspictureftptest{
publicvoidtestftpclient()throwsexception{
//1.创建一个ftpclient对象
ftpclientftpclient=newftpclient();
ftpclient.connect("192.168.0.11",21);
ftpclient.login("ftpuser","root");
fileinputstreaminputstream=newfileinputstream(newfile("f:\hello.png"));
ftpclient.changeworkingdirectory("/usr/local/nginx/html/images");
//6.修改上传文件的格式为二进制
ftpclient.setfiletype(ftp.binary_file_type);
//7.服务器存储文件,第一个参数是存储在服务器的文件名,第二个参数是文件流
ftpclient.storefile("hello.jpg",inputstream);
}
说明:这里的ip地址,端口,ftp用户名,密码,本地文件路径,以及nginx服务器图片路径等,这些字符串参数都要根据自己实际设置的来填写的。如果你的nginx和vsftpd安装是按照我提供的链接来做的。那你只需要改ip地址即可。
搭建maven的web项目,之前有写过。这里就不过多描述。
首先是maven的核心文件pom.xml
<projectxmlns="http://maven.apache.org/pom/4.0.0"xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
xsi:schemalocation="http://maven.apache.org/pom/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelversion>4.0.0</modelversion>
<groupid>com.itdragon.upload</groupid>
<artifactid>pictrue-service</artifactid>
<version>0.0.1-snapshot</version>
<packaging>war</packaging>
<!--集中定义依赖版本号-->
<junit.version>4.12</junit.version>
<spring.version>4.1.3.release</spring.version>
<mybatis.version>3.2.8</mybatis.version>
<mybatis.spring.version>1.2.2</mybatis.spring.version>
<mybatis.paginator.version>1.2.15</mybatis.paginator.version>
<mysql.version>5.1.6</mysql.version>
<slf4j.version>1.6.4</slf4j.version>
<jackson.version>2.4.2</jackson.version>
<druid.version>1.0.9</druid.version>
<httpclient.version>4.3.5</httpclient.version>
<jstl.version>1.2</jstl.version>
<servlet-api.version>2.5</servlet-api.version>
<jsp-api.version>2.0</jsp-api.version>
<joda-time.version>2.5</joda-time.version>
<commons-lang3.version>3.3.2</commons-lang3.version>
<commons-io.version>1.3.2</commons-io.version>
<commons-net.version>3.3</commons-net.version>
<pagehelper.version>3.4.2</pagehelper.version>
<jsqlparser.version>0.9.1</jsqlparser.version>
<commons-fileupload.version>1.3.1</commons-fileupload.version>
<jedis.version>2.7.2</jedis.version>
<solrj.version>4.10.3</solrj.version>
<!--时间操作组件-->
<groupid>joda-time</groupid>
<artifactid>joda-time</artifactid>
<version>${joda-time.version}</version>
<!--apache工具组件-->
<groupid>org.apache.commons</groupid>
<artifactid>commons-lang3</artifactid>
<version>${commons-lang3.version}</version>
<groupid>org.apache.commons</groupid>
<artifactid>commons-io</artifactid>
<version>${commons-io.version}</version>
<groupid>commons-net</groupid>
<artifactid>commons-net</artifactid>
<version>${commons-net.version}</version>
<!--jacksonjson处理工具包-->
<groupid>com.fasterxml.jackson.core</groupid>
<artifactid>jackson-databind</artifactid>
<version>${jackson.version}</version>
<groupid>org.apache.httpcomponents</groupid>
<artifactid>httpclient</artifactid>
<version>${httpclient.version}</version>
<groupid>junit</groupid>
<artifactid>junit</artifactid>
<version>${junit.version}</version>
<scope>test</scope>
<groupid>org.slf4j</groupid>
<artifactid>slf4j-log4j12</artifactid>
<version>${slf4j.version}</version>
<groupid>org.mybatis</groupid>
<artifactid>mybatis</artifactid>
<version>${mybatis.version}</version>
<groupid>org.mybatis</groupid>
<artifactid>mybatis-spring</artifactid>
<version>${mybatis.spring.version}</version>
<groupid>com.github.miemiedev</groupid>
<artifactid>mybatis-paginator</artifactid>
<version>${mybatis.paginator.version}</version>
<groupid>com.github.pagehelper</groupid>
<artifactid>pagehelper</artifactid>
<version>${pagehelper.version}</version>
<groupid>mysql</groupid>
<artifactid>mysql-connector-java</artifactid>
<version>${mysql.version}</version>
<groupid>com.alibaba</groupid>
<artifactid>druid</artifactid>
<version>${druid.version}</version>
<groupid>org.springframework</groupid>
<artifactid>spring-context</artifactid>
<version>${spring.version}</version>
<groupid>org.springframework</groupid>
<artifactid>spring-beans</artifactid>
<version>${spring.version}</version>
<groupid>org.springframework</groupid>
<artifactid>spring-webmvc</artifactid>
<version>${spring.version}</version>
<groupid>org.springframework</groupid>
<artifactid>spring-jdbc</artifactid>
<version>${spring.version}</version>
<groupid>org.springframework</groupid>
<artifactid>spring-aspects</artifactid>
<version>${spring.version}</version>
<groupid>jstl</groupid>
<artifactid>jstl</artifactid>
<version>${jstl.version}</version>
<groupid>javax.servlet</groupid>
<artifactid>servlet-api</artifactid>
<version>${servlet-api.version}</version>

<groupid>javax.servlet</groupid>
<artifactid>jsp-api</artifactid>
<version>${jsp-api.version}</version>
<scope>provided</scope>
<!--文件上传组件-->
<groupid>commons-fileupload</groupid>
<artifactid>commons-fileupload</artifactid>
<version>${commons-fileupload.version}</version>
<groupid>redis.clients</groupid>
<artifactid>jedis</artifactid>
<version>${jedis.version}</version>
<groupid>org.apache.solr</groupid>
<artifactid>solr-solrj</artifactid>
<version>${solrj.version}</version>
<finalname>${project.artifactid}</finalname>
<!--资源文件拷贝插件-->
<groupid>org.apache.maven.plugins</groupid>
<artifactid>maven-resources-plugin</artifactid>
<version>2.7</version>
<encoding>utf-8</encoding>
<!--java编译插件-->
<groupid>org.apache.maven.plugins</groupid>
<artifactid>maven-compiler-plugin</artifactid>
<version>3.2</version>
<source>1.7</source>
<target>1.7</target>
<encoding>utf-8</encoding>
<!--配置tomcat插件-->
<groupid>org.apache.tomcat.maven</groupid>
<artifactid>tomcat7-maven-plugin</artifactid>
<version>2.2</version>
</pluginmanagement>
</project>
说明:和文件上传有直接关系的是:
<groupid>commons-fileupload</groupid>
<artifactid>commons-fileupload</artifactid>
</dependency>
然后是web项目的核心文件web.xml
<?xmlversion="1.0"encoding="utf-8"?>
<web-appxmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemalocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="taotao"version="2.5">
<display-name>pictrue-service</display-name>
<!--加载spring容器-->
<param-name>contextconfiglocation</param-name>
<param-value>classpath:spring/applicationcontext-*.xml</param-value>
<listener-class>org.springframework.web.context.contextloaderlistener</listener-class>
<!--解决post乱码-->
<filter-name>characterencodingfilter</filter-name>
<filter-class>org.springframework.web.filter.characterencodingfilter</filter-class>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
<filter-name>characterencodingfilter</filter-name>
mapuploadpicture(multipartfileuploadfile);
}
上传图片接口实现类pictureserviceimpl.java
packagecom.itdragon.service.impl;
importjava.io.ioexception;
importjava.io.inputstream;
importorg.apache.commons.net.ftp.ftp;
importorg.apache.commons.net.ftp.ftpclient;
importorg.apache.commons.net.ftp.ftpreply;
importorg.springframework.beans.factory.annotation.value;
importorg.springframework.stereotype.service;
importorg.springframework.web.multipart.multipartfile;
importcom.itdragon.service.pictureservice;
@suppresswarnings(
说明:
①@value注解是spring4中提供的,@value("${xxx}")
②返回值是一个map,并且key有error,url,message。这是根据kindediter的语法要求来的。
负责页面跳转的pagecontroller.java
packagecom.itdragon.controller;
importorg.springframework.stereotype.controller;
importorg.springframework.web.bind.annotation.pathvariable;
importorg.springframework.web.bind.annotation.requestmapping;
publicclasspagecontroller{
@requestmapping("/{page}")
publicstringshowpage(@pathvariablestringpage){
system.out.println("page:"+page);
}
负责图片上传的picturecontroller.java
packagecom.itdragon.controller;
importorg.springframework.beans.factory.annotation.autowired;
importorg.springframework.web.bind.annotation.requestmapping;
importorg.springframework.web.bind.annotation.requestparam;
importorg.springframework.web.bind.annotation.restcontroller;
importorg.springframework.web.multipart.multipartfile;
importcom.fasterxml.jackson.core.jsonprocessingexception;
importcom.fasterxml.jackson.databind.objectmapper;
importcom.itdragon.service.pictureservice;
publicclasspicturecontroller{
privatepictureservicepictureservice;
@requestmapping("pic/upload")
publicstringpictureupload(@requestparam(value="fileupload")multipartfileuploadfile){
mapresult=pictureservice.uploadpicture(uploadfile);
//浏览器擅长处理json格式的字符串,为了减少因为浏览器内核不同导致的bug,建议用json
json=newobjectmapper().writevalueasstring(result);
}catch(jsonprocessingexceptione){
①@restcontroller也是spring4提供的,是@controller+@responsebody的组合注解。
②controller层的返回值是一个json格式的字符串。是考虑到浏览器对json解析兼容性比较好。
负责上传图片的jsp页面pic-upload.jsp
<%@pagelanguage="java"contenttype="text/html;utf-8"pageencoding="utf-8"%>
<metahttp-equiv="content-type"content="text/html;charset=utf-8">
<title>itdragon图片上传</title>
<linkhref="https://www.fruan.com/js/kindeditor-4.1.10/themes/default/default.css"rel="externalnofollow"type="text/css"rel="stylesheet">
<scripttype="text/javascript"src="https://www.fruan.com/post/js/jquery.min.js"></script>
<scripttype="text/javascript"charset="utf-8"src="https://www.fruan.com/js/kindeditor-4.1.10/kindeditor-all-min.js"></script>
<scripttype="text/javascript"charset="utf-8"src="https://www.fruan.com/js/kindeditor-4.1.10/lang/zh_cn.js"></script>
<h3>测试上传图片功能接口的form表单</h3>
<formaction="pic/upload"method="post"enctype="multipart/form-data">
<inputtype="file"name="fileupload"/>
<inputtype="submit"value="上传文件"/>
<h3>借用kindeditor富文本编辑器实现批量上传图片</h3>
<textareaid="kindeditordesc"style="width:800px;height:300px;visibility:hidden;"></textarea>
<scripttype="text/javascript">
kindeditor.create("#kindeditordesc",{
//name值,必须和controller的参数对应,不然会提示400的错误
filepostname:"fileupload",
uploadjson:'/pic/upload',
//设置上传类型,分别为image、flash、media、file
</html>
说明:pic-upload.jsp分为两个部分,第一个部分是为了测试上传图片功能的form表单。第二个部分是为了更好的体验上传,批量上传,回显功能的kindediter富文本编辑器。
以上就是Nginx怎么搭建图片服务器的详细内容,更多请关注主机测评网其它相关文章!
本文来源:国外服务器--nginxhdfs搭建图片服务器(日本nginx软件)
本文地址:https://www.idcbaba.com/guowai/4611.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



