`

图片服务器和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  
不错。来学习的

相关推荐

    注解实现SSH2图片服务器分离上传下载

    标题中的“注解实现SSH2图片服务器分离上传下载”指的是在软件开发中,利用Java的注解机制来实现与SSH2(Secure Shell v2)协议相结合的图片服务器功能。SSH2是一种广泛使用的网络协议,主要用于安全地进行远程登录...

    应用商店.JAVA WEB服务器zip.zip

    下面我们将深入探讨Java Web服务器、它们的工作原理以及如何与应用商店相结合。 1. **Java Web服务器**:Java Web服务器(如Apache Tomcat、Jetty或IBM WebSphere)是支持执行Java Servlet和JavaServer Pages (JSP)...

    Java Web应用开发项目教程[聂明][电子教案]

    在Java Web应用开发中,我们首先要了解的是基础概念,包括Web服务器、HTTP协议、Servlet和JSP等。Servlet是Java语言编写服务器端程序的核心API,用于扩展服务器的功能,处理来自客户端(通常是浏览器)的请求。而JSP...

    JSP Web应用教程

    JSP技术自1999年推出以来,已经成为了企业级Web开发的重要工具,尤其在构建大型、复杂Web应用时表现出强大的功能和灵活性。 **JSP的基础知识:** 1. **JSP页面结构**:JSP页面主要由静态内容(HTML、CSS、...

    Java Web应用开发与实践范例

    还有Tomcat、Jetty等Web服务器,它们为Java Web应用提供运行环境。 在实际项目开发中,还会用到版本控制系统如Git,构建工具如Maven或Gradle,以及自动化测试框架如JUnit。同时,现代Java Web开发往往与RESTful API...

    高性能Web服务器Nginx及相关新技术的应用实践

    综上所述,《高性能Web服务器Nginx及相关新技术的应用实践》这门课程将深入讲解Nginx的各种功能和使用技巧,以及如何将其与新兴技术相结合,以提升Web服务的效率和可靠性。通过学习,我们可以更好地理解和运用Nginx...

    IIS服务器和SQL服务器的匿名连接

    【IIS服务器和SQL服务器的匿名连接】是一个关于在物理分离的环境中,如何安全地让IIS(Internet Information Services)服务器与SQL Server进行数据交互的技术主题。在常规操作中,数据库连接字符串通常包含用户名和...

    resin java web 容器 服务器

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

    Ext.NET Web应用程序开发教程

    - **适用场景**:适用于需要快速开发高度交互式的Web应用的项目,特别适合那些需要大量数据处理、图表展示和复杂表单的应用场景。 #### 二、ASP.NET Web Forms与ASP.NET MVC支持 - **ASP.NET Web Forms**: - **...

    “联合信息杯”全国高职院校Web应用软件开发技能竞赛赛项规程Web应用软件开发大赛竞赛规程.pdf

    "联合信息杯"全国高职院校Web应用软件开发技能竞赛是一...总之,"联合信息杯"全国高职院校Web应用软件开发技能竞赛不仅是一场检验学生技能的比赛,更是一个推动职业教育与行业需求相结合,提升学生全面素质的重要平台。

    Java Web应用程序设计PPT及源代码

    MVC(Model-View-Controller)模式是Web应用程序设计中常见的架构模式,它将业务逻辑(Model)、用户界面(View)和控制逻辑(Controller)分离,提高了代码的可维护性和可重用性。在实际项目中,如Spring MVC框架...

    本科毕业设计--基于linux-nginx-反向代理服务器的应用研究.doc

    Web 2.0时代的到来,Web服务器的访问者数量快速增加,服务器的CPU和I/O处理能力很快成为企业业务增长的瓶颈。因此,需要通过多台服务器提供网络服务来解决问题。 知识点7:小型企业中Nginx的应用 Nginx在小型企业中...

    Java服务器程序设计:原理和技术

    Subrahmanyam Allamaraju博士的《Java Server Programming: Principles and Technologies》一书深入探讨了构建和管理服务器端企业应用面临的挑战和解决方案。 首先,文章旨在揭示服务器端应用程序的技术需求,并...

    f服务器软件Tomcat下载 这是开发动态网页要用到的哦

    JSP是一种用于构建动态网站的服务器端技术,它允许开发者将业务逻辑和视图(即网页内容)相分离。在Tomcat中,JSP文件会被编译成Servlet,然后由Tomcat执行。这种工作方式使得开发和维护JSP应用变得更为便捷。 在...

    基于嵌入式Linux和Ajax技术的Web异步交互设计.pdf

    在本文中,作者吕国勇和史祥龙提出了一种创新的方法,将Web页面与代码分离,利用Ajax中的XmlHttpRequest对象结合XML进行动态参数的传输。这一设计思路避免了重复传输Web静态页面,有效地减少了数据交互量,解决了...

    Java Web应用开发课程目标的研究与设定.zip

    4. **MVC设计模式**:了解Model-View-Controller(模型-视图-控制器)架构,它是构建Web应用的标准模式,能有效分离业务逻辑、数据和用户界面。 5. **Java Web容器**:学习如何配置和使用Tomcat、Jetty等Web应用...

    基于vue-admin和后端flask分离结合的超简单模板

    本项目基于"基于vue-admin和后端flask分离结合的超简单模板",展示了如何将Vue.js(一个流行的前端JavaScript框架)与Flask(一个轻量级的Python Web服务器和Web应用框架)相结合,实现高效且易于维护的Web应用。...

Global site tag (gtag.js) - Google Analytics