java FTP图片服务器创建

来源:互联网 发布:nginx静态资源缓存 编辑:程序博客网 时间:2024/06/16 13:03

使用技术:

Windows环境

ftp服务器。

apache server技术。


安装apache server(转载)


一、版本介绍及安装过程

     首先我们要先下载Apache2.4服务器:http://httpd.apache.org/。

关于现在那个版本的服务器我这里要说明一下,Apache有本身的服务器是不能使用的,必须要先编译才可以使用的。但是在他的官网上也提供了第三方编译好的Apache所以这里我们就,下载第三方的而不用自己手动在编译了。这里它提供了五个第三方的服务器。

1、如果要安装继承开发环境,可以选择后两个WampServer和XAMPP,安装使用都很方便。

2、下载单独的安装包可以选择前两个网站ApacheHaus和Apache Lounge

下载工程

二、Apache服务器配置

1、下载好之后我们将压缩包进行解压,然后将解压后的文件放置在指定的目录下(下面是自己的放置目录):


解压后可以看到以下目录结构:





2、进入conf目录下打开httpd.conf文件,对其进行修改默认的配置:

修改一:

第38行默认是:

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. Define SRVROOT "/Apache24"    
  2. ServerRoot "${SRVROOT}"  
[html] view plain copy
  1. Define SRVROOT "/Apache24"    
  2. ServerRoot "${SRVROOT}"  

修改为你安装Apache的所在目录:

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. Define SRVROOT "E:\Apache_App_Server\httpd-2.4.25-x64-vc14-r1\Apache24"  
  2. ServerRoot "${SRVROOT}"  
[html] view plain copy
  1. Define SRVROOT "E:\Apache_App_Server\httpd-2.4.25-x64-vc14-r1\Apache24"  
  2. ServerRoot "${SRVROOT}"  
如果不修改会提示错误:

httpd.exe: Syntax error on line 39 of D:/Android_Develop_Tools/httpd-2.4.23-x64-
vc14/Apache24/conf/httpd.conf: ServerRoot must be a valid directory

修改二:

第60行默认是:

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. #Listen 12.34.56.78:80    
  2. Listen 80   
[html] view plain copy
  1. #Listen 12.34.56.78:80    
  2. Listen 80   
改为8081(你可以自己随便定义,但是不要和其他的冲突即可)

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. #Listen 12.34.56.78:80  
  2. Listen 8081  
[html] view plain copy
  1. #Listen 12.34.56.78:80  
  2. Listen 8081  
修改三:

第223行默认是:

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. ServerName localhost:80   
[html] view plain copy
  1. ServerName localhost:80   
改为:

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. ServerName localhost:8081  
[html] view plain copy
  1. ServerName localhost:8081  

如果不修改会提示错误:

(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。  : AH00072: make_sock: could not bind to address [::]:80
(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。  : AH00072: make_sock: could not bind to address 0.0.0.0:80
AH00451: no listening sockets available, shutting down


3、进入到bin目录下,然后按住shift按键不放单击鼠标的右键,选择 “在此处打开命令窗口”,并输入httpd.exe -k install,回车后可能会出现:windows安装Apache,注册服务出现“(OS 5)拒绝访问。 : AH00369: Failed to open the WinNT service manager..."错误的信息,这时,只要在C:\Windows\SysWOW64目录下找到CMD.EXE文件,在这个文件上右键以管理员身份运行即可。最后通过命令进行到Apache的安装目录下再次httpd.exe -k install 安装apache服务,看到以下信息就说明成功了。如下图



4、解决443端口被占了

(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。  : AH00072: make_sock: could not bind to address [::]:443
(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。  : AH00072: make_sock: could not bind to address 0.0.0.0:443 AH00451: no listening sockets available, shutting down

如果提示你上方的信息说明你的443端口被占用了,解决办法为

打开httpd.conf, 找到加载ssl_module的那一行, 加#号注释掉就好了:# LoadModule ssl_module modules/mod_ssl.so

现在输入httpd.exe -k start命令就可以了。httpd.exe -k start为启动Apache服务命令

我们在浏览器中输入http://localhost:8081/index.html,看的效果如下图所示:



特别说明:

Apache安装成功后,在安装目录中,找到E:\Apache_App_Server\httpd-2.4.25-x64-vc14-r1\Apache24\bin\ApacheMonitor.exe可执行文件,双击运行,桌面右下角会出现图标,双击打开窗口界面如下图点击 start 启动Apacha服务。





现在是启动状态,当然你也可以手动进行Shop、Start、exit等操作。

到此apache服务安装成功。

补充说明:

若Apache服务器软件不想用了,想要卸载,需要先卸载apache服务(切记,若直接删除安装路径的文件夹,会有残余文件在电脑,可能会造成不必要的麻烦)。在CMD命令窗口,输入如下(建议先停止服务再删除):

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. sc delete apache  
[html] view plain copy
  1. sc delete apache  
apache是Apache服务器的服务名


项目下面htdocs放有图片的话,可以用浏览器访问图片。


ftp项目(转载)

pom.xml

<dependency>        <groupId>commons-net</groupId>        <artifactId>commons-net</artifactId>        <version>3.3</version>    </dependency>

测试项目

@Test   public void testFtp1(){       //创建客户端对象       FTPClient ftp = new FTPClient();       InputStream local=null;       try {           //连接ftp服务器           ftp.connect("192.168.80.161", 21);           //登录           ftp.login("ftpuser", "1111");           //设置上传路径           String path="/home/ftpuser/image";           //检查上传路径是否存在 如果不存在返回false           boolean flag = ftp.changeWorkingDirectory(path);           if(!flag){               //创建上传的路径  该方法只能创建一级目录,在这里如果/home/ftpuser存在则可创建image               ftp.makeDirectory(path);           }           //指定上传路径           ftp.changeWorkingDirectory(path);           //指定上传文件的类型  二进制文件           ftp.setFileType(FTP.BINARY_FILE_TYPE);           //读取本地文件           File file = new File("mm.jpg");           local = new FileInputStream(file);           //第一个参数是文件名           ftp.storeFile(file.getName(), local);        } catch (SocketException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }finally {            try {                //关闭文件流                local.close();                //退出                ftp.logout();                //断开连接                ftp.disconnect();            } catch (IOException e) {                e.printStackTrace();            }        }   }


我自己的理解

  1. 项目下面htdocs放有图片的话,可以用浏览器访问图片。
  2. 用FTPClient,执行到ftp.storeFile(fileName, inputFile);无反应
    Q:用FTPClient,执行到ftp.storeFile(fileName, 
    inputFile);无反应了

    A:  
    ftpenterLocalPassiveMode();//重要
    ftp.storeFile(fileName, inputFile);
    问题解决

    原因是:FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。 PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请 求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT 命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的 XXXX端口发送连接请求,建立一条数据链路来传送数据。 PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请 求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV 命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口 发送连接请求,建立一条数据链路来传送数据。




原创粉丝点击