`

图片服务器和WEB应用服务器相分离的简单方案

    博客分类:
  • Php
阅读更多
只是简单说明一下原理,其它的自己探索吧:)

一、两个域名: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 服务器的系统类型
分享到:
评论
1 楼 cncfophp 2010-10-21  
不错。来学习的

相关推荐

    resin java web 容器 服务器

    Resin的一种先进的语言XSL(XML stylesheet language)可以使得形式和内容相分离。 如果您选用jsp平台作为internet商业站点的支持,那么速度、价格和稳定性都是要考虑到的,resin十分出色,表现更成熟,很具备商业软件...

    resin4 web服务器

    Resin的一种先进的语言XSL(XML stylesheet language)可以使得形式和内容相分离。 如果您选用jsp平台作为internet商业站点的支持,那么速度、价格和稳定性都是要考虑到的,resin十分出色,表现更成熟,很具备商业软件...

    论文研究-基于微粒群算法的生料浆调配多目标满意优化.pdf

    会议应用由业务层的应用服务器、Web服务器和媒体服务器实现,呼叫控制功能由软交换完成,业务媒体流由IP网络承载。实现的原型系统由基于Tomcat开发的Web服务器、基于MOBICENTS开发的会议服务器、支持MSCML(Media ...

    resin-2.1.8服务器

    Resin的一种先进的语言XSL(XML stylesheet language)可以使得形式和内容相分离。 如果您选用jsp平台作为internet商业站点的支持,那么速度、价格和稳定性都是要考虑到的,resin十分出色,表现更成熟,很具备商业软件...

    Web2.0社区平台源码

    实现数据库读写分离,便于部署多台数据库服务器实现数据库负载均衡;  2.针对所有数据库查询语句进行优化,重写数据分页的存储过程,为大数据量及超大数据库做好准备;  3.缓存设计为Provider模式,可以很方便的...

    基于J2EE四层体系框架系统的研究与实现

    我们设计并实现的基于J2EE四层结构的系部动态网站,根据生产--消费模式,将应用的逻辑处理和应用的表现相分离,WEB服务器负责应用的表现,应用逻辑层负责应用的逻辑处理。前台系统即消费子系统,为访问者提供信息的...

    ASP校园网站相册管理系统设计(thesis+源代码).zip

    项目是基于ASP.NET的Web应用程序开发...通过采用这些技术方案,我们的项目将能够提供一个高性能、可扩展和可靠的Web应用程序。我们将遵循最佳的软件开发实践,进行系统测试和性能测试,以确保应用程序的质量和稳定性。

    JavaServer Pages (JSP)

    JavaServer Pages (JSP) 技术提供了一种简单快速的方法来创建显示动态生成内容的 Web 页面。由业界处于领先地位的 Sun 公司制定了相关的 JSP 技术规范,该规范定义了如何在服务器和 JSP 页面间进行交互,还描述了...

    基于Web的家政管理系统.doc

    绝大多数家政网站只是一个信息发布平台,或者将家政中心管理系统与对外信息发布平台相分离,不能实现信息的及时更新和数据共享。 因此,一个能解决上述问题的家政管理系统无疑是适应现实需要的。本文采用面向对象的...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    1.2.4 Android移动Web项目开发的三种解决方案:Native, Web和Hybrid优缺陷分析 4 1.2.5国内外应用现状 6 1.2.6 研究现状总结 7 1.3研究目标与内容 7 1.3.1多窗口浏览器模式的实现机制 7 1.3.2跨域交互即缓存处理方法...

    3.ASP.NET 2.0 入门经典(第4版) [压缩包1/10]

    6.1 Web服务器体系结构 163 6.2 服务器端事件 165 6.3 为页面添加事件 166 6.3.1 回送结构 171 6.3.2 可用的事件 172 6.3.3 选择应该使用的事件 173 6.4 不只是能被用户触发的事件 176 6.5 间接事件 180 6.6...

    java开源包5

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    基于J2EE框架的个人博客系统项目毕业设计论...

    目前支持JSP的应用服务器是较多的,Tomcat是其中较为流行的一个Web服务器,被JavaWorld杂志的编辑选为2001年度最具创新的Java产品,可见其在业界的地位。 Tomcat是一个免费的开源的Serlvet容器,在Tomcat中,应用...

    网页版文件上传控件 File Upload Control For Html version:1.0.0.11

    8.整合的系统可以使文件服务器与WEB系统服务器相分离,使得您的系统可进行无限扩容。服务器端动态帐号加密组件无缝地支持dotnet,asp,php,jsp. 静态加密程序加密结果支持所有据于WEB的应用系统。 9.控件对FTP帐号等...

    轻量级Django.[美]Julia Elman(带详细书签).pdf

    在本书中,我们要突出说明如何将这些组件进行分离和间接替换,并从中选出最适合创建应用的一些组件来。同样地,我们想要将Django 项目和应用的典型框架进行分解。我们的目标是使读者不再提出“我怎样用Django 完成我...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    目前支持JSP的应用服务器是较多的,Tomcat是其中较为流行的一个Web服务器,被JavaWorld杂志的编辑选为2001年度最具创新的Java产品,可见其在业界的地位。 Tomcat是一个免费的开源的Serlvet容器,在Tomcat中,应用...

    超级有影响力霸气的Java面试题大全文档

    派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装:  封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,...

    JAVA上百实例源码以及开源项目源代码

    Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...

    net学习笔记及其他代码应用

    30.简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。 答:WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。 31.公司要求开发一个继承System....

    (完整)Android手机天气预报项目报告.doc

    2.2 技术支持 本软件使用基于SOAP(简单对象访问协议)的Web Service技术来实现与服务器端的信息交互,获取网络上的数据.Web Service使用基于XML技术的消息处理,作为基本的数据通讯方式.Web Service建立在一些通用...

Global site tag (gtag.js) - Google Analytics