zoukankan      html  css  js  c++  java
  • 图片服务器和WEB应用服务器相分离的简单方案

    只是简单说明一下原理,其它的自己探索吧:) 
    一、两个域名:www.domain.com和img.domain.com 
    二、在www域名的服务器中上传文件: 
    up.html

    <form name="myform" action="save.php?action=ok" method="POST" enctype="multipart/form-data" >
    <input type="file" name="itname" value="">
    <input type="submit" name="tt" value="upit">
    </form>


    save.php

    if(@$_GET['action']=="ok")
    {
    $picname="upfile/".rand().".jpg";
    move_uploaded_file($_FILES['itname']['tmp_name'],$picname);
    }
    $ftp_server="img.domain.com";//要连接的服务器域名
    $con=ftp_connect($ftp_server);//连接FTP服务器
    ftp_login($con,"username","password");//发送用户名和密码
    $tempstate=ftp_put($con,"drckness.jpg",$picname,FTP_BINARY)//以二进制方式上传文件
    if($tempstate){
    echo "上传成功";
    unlik($picname);//删除www服务器上的图片当然你也可以保留
    }else{
    echo "上传未成功";
    };
    ftp_quit($conn);// 关闭联接,不然会一直开着占用资源
    


    以上只是说明如何实现图片和WEB分离的原理。在实际开发中,还要进行如:上传检测,水印,缩略图生成,冗余判断,延时间操作,图片路径记录等操作。 
    但只要明白了原理其它的应该不在话下了吧:) 
    ================================================= 
    下面是我总结的PHP的FTP常用函数大全:) 
    php的ftp相关函数使用 
    // 联接FTP服务器 
    $conn = ftp_connect("ftp.server.com"); 
    为了初结化一个FTP联接,PHP提供了ftp_connect()这个函数,它使用主机名称和端口作为参数。在上面的例子里,主机名字为“ftp.server.com”;如果端口没指定,PHP将会使用“21”作为缺省端口来建立联接。 
    联接成功后ftp_connect()传回一个handle句柄;这个handle将被以后使用的FTP函数使用 
    ===========================================================================================================
    // 使用username和password登录 
    ftp_login($conn, "john", "doe"); 
    一旦建立联接,使用ftp_login()发送一个用户名称和用户密码。你可以看到,这个函数ftp_login()使用了ftp_connect()函数传来的handle,以确定用户名和密码能被提交到正确的服务器。 
    ============================================================================================================
    // 关闭联接 
    ftp_quit($conn); 
    记得使用ftp_quit来关闭联接:) 
    ====================================================== 
    $here = ftp_pwd($conn);//获取当前所在目录位置 
    $server_os = ftp_systype($conn);//操作系统类型 
    ftp_pasv($conn,1);//打开ftp的被动传输模式 
    (说明: 
    FTP传输过程中要求建立一个专门的连接来传输数据,建立连接有两个方法: 
    一个就是FTP Server打开一个端口,Client可以去连接这个端口来建立连接。这就是PASV方式。 
    一个就是FTP Client打开一个端口,Server去连接这个端口来建立连接。这就是PORT方式。 
    显然,如果服务器打开了一个端口,就意味着向互联网打开了一个端口。所以PORT方式比PASV方式安全,但同时也存在客户端因为 
    防火墙问题而有可能连接失败。所以我认为一般默认就可以:) 
    ) 
    ftp_chdir($conn, "htmldir");//进入htmldir目录 
    ftp_cdup($conn);//返回上一级目录 
    ftp_mkdir($conn, "mktest");//建立一个mktest的目录,如果成功则返回目录名字,如果不成功返回FALSE 
    ftp_rmdir($conn, "rmtest");//删除一个目录,成功true,失败false 
    ftp_put($conn, "xyz.txt", "abc.txt", FTP_ASCII);//上传文件到服务器,参数(连接,远程生成的文件名,本地的文件名,FTP_ASCEE为文本传输/FTP_BINARY为二进制方式上传) 
    ftp_get($conn, "hers.zip", "his.zip", FTP_BINARY);//下载文件到本地服务器 
    $filelist = ftp_nlist($conn, ".");//简单列出文件名和目录 
    $filelist = ftp_rawlist($conn, ".");//详细列出文件名大小,权限,日期等等两个函数都返回数组 
    $filelist = ftp_size($conn, "data.zip");//取得文件的大小 
    =========更多函数参考手册================================================= 
    ftp_alloc -- Allocates space for a file to be uploaded 
    ftp_cdup -- 切换到当前目录的父目录 
    ftp_chdir -- 在 FTP 服务器上切换当前目录 
    ftp_chmod -- Set permissions on a file via FTP 
    ftp_close -- 关闭一个活动的 FTP 连接 
    ftp_connect -- 建立一个新的 FTP 连接 
    ftp_delete -- 删除 FTP 服务器上的一个文件 
    ftp_exec -- 请求运行一条 FTP 命令 
    ftp_fget -- 从 FTP 服务器上下载一个文件并保存到本地一个已经打开的文件中 
    ftp_fput -- 上传一个已经打开的文件到 FTP 服务器 
    ftp_get_option -- 返回当前 FTP 连接的各种不同的选项设置 
    ftp_get -- 从 FTP 服务器上下载一个文件 
    ftp_login -- 登录 FTP 服务器 
    ftp_mdtm -- 返回指定文件的最后修改时间 
    ftp_mkdir -- 建立新目录 
    ftp_nb_continue -- 连续获取/发送文件(non-blocking) 
    ftp_nb_fget -- Retrieves a file from the FTP server and writes it to an open file (non-blocking) 
    ftp_nb_fput -- Stores a file from an open file to the FTP server (non-blocking) 
    ftp_nb_get -- 从 FTP 服务器上获取文件并写入本地文件(non-blocking) 
    ftp_nb_put -- 存储一个文件至 FTP 服务器(non-blocking) 
    ftp_nlist -- 返回给定目录的文件列表 
    ftp_pasv -- 返回当前 FTP 被动模式是否打开 
    ftp_put -- 上传文件到 FTP 服务器 
    ftp_pwd -- 返回当前目录名 
    ftp_quit -- ftp_close() 的别名 
    ftp_raw -- Sends an arbitrary command to an FTP server 
    ftp_rawlist -- 返回指定目录下文件的详细列表 
    ftp_rename -- ü FTP ·÷¨ 
    ftp_rmdir -- 删除一个目录 
    ftp_set_option -- è÷ FTP ± 
    ftp_site -- 向服务器发送 SITE 命令 
    ftp_size -- 返回指定文件的大小 
    ftp_ssl_connect -- Opens an Secure SSL-FTP connection 
    ftp_systype -- 返回远程 FTP 服务器的系统类型

    来源:http://biancheng.dnbcw.net/php/172545.html

  • 相关阅读:
    python计算纹理特征
    遥感影像提取农作物种植分布数据之经验总结
    Python实现多线程调用GDAL执行正射校正
    Centos7.3 编译安装GDAL以及Python的GDAL包
    C#通过COM组件调用IDL的pro程序
    IDL实现矢量文件裁剪栅格数据
    HttpClient使用示列(post请求的)
    SpringBoot自带的定时功能
    mysql安装与启用
    dos命令之端口查看
  • 原文地址:https://www.cnblogs.com/xqschool/p/6508526.html
Copyright © 2011-2022 走看看