Maison développement back-end tutoriel php 三步FTP实现PHP上传文件代码剖析_PHP教程

三步FTP实现PHP上传文件代码剖析_PHP教程

Jul 15, 2016 pm 01:27 PM
ftp php 上传 sous 代码 剖析 ? 实现 apporter je 文件 步骤 de 详细

想知道上传文件的详细步骤吗,下面我就带大家一起详细分析一下吧。利用PHP,你总是可以有多种方式来完成某个特定的任务。我们就拿文件上传举个例子。当然了,你可以按照传统的方式来使用HTTP文件上传,把文件直接传输到Web服务器磁盘上。你还可以用更加奇异的方式上传,用FTP协议两步就完成上传:从你的本地硬盘到Web服务器,然后再到FTP服务器。

PHP在本机同时支持FTP和HTTP上传,所以你可以根据自己应用程序的设计需要进行最佳的选择。使用PHP的FTP函数进行文件传输几乎与使用传统的FTP客户端相同——你会看到连函数的名字都和标准的FTP命令类似。关于HTTP文件上传的文章已经多得满天飞了,这就是为什么本文有必要把注意力放在基于FTP的文件上传上了(但是在后面给出的例子中,两种方式你都会看到)。要注意的是,本教程假设你已经安装好了PHP/Apache,而且HTTP文件上传和FTP的函数都已经激活了。本文可以从这里下载,所有的源代码都以单独的文本方式列出来了。

第一步:确信你拥有连接/上传到FTP服务器的权限

PHP的FTP函数需要客户端-服务器连接,所以你需要在进行文件上传之前登录到目标服务器上。你的第一项任务是确信你已经拥有了完成这项任务的信任书。这一步可能看起来是理所当然的,但是你会惊奇地发现有多少开发人员忘了这么做,结果后来浪费大量的时间来解决因此而出现的问题。你可以通过使用命令行的FTP客户端登录到目标服务器上,以检查连接状况并尝试上传一个假文件。

PHP上传文件代码列表A

<ol class="dp-xml">
<li class="alt"><span><span>$ftp  </span></span></li>
<li class="">
<span>ftp</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>opensome.host.com  </span>
</li>
<li class="alt"><span>Connectedtosome.host.com.  </span></li>
<li class=""><span>220WelcometoleonFTPServer!  </span></li>
<li class="alt"><span>User:upload  </span></li>
<li class=""><span>331Useruploadokay,needpassword.  </span></li>
<li class="alt"><span>Password:***  </span></li>
<li class=""><span>230Restricteduserloggedin.  </span></li>
<li class="alt">
<span>ftp</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>bin  </span>
</li>
<li class=""><span>200Typeokay.  </span></li>
<li class="alt">
<span>ftp</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>hash  </span>
</li>
<li class=""><span>HashmarkprintingOn?ftp:(2048bytes/hashmark).  </span></li>
<li class="alt">
<span>ftp</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>putfile.bin  </span>
</li>
<li class=""><span>200PORTcommandsuccessful.  </span></li>
<li class="alt"><span>150OpeningBINARYmodedataconnection.  </span></li>
<li class=""><span>##  </span></li>
<li class="alt"><span>226Transfercompleted.  </span></li>
<li class=""><span>ftp:4289bytessentin0.00Seconds4289000.00Kbytes/sec.  </span></li>
<li class="alt">
<span>ftp</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>bye  </span>
</li>
<li class=""><span>221Goodbye. </span></li>
</ol>
Copier après la connexion

一旦确认有相关的访问权限,你就可以登录出来。

第二步:创建上传表单

然后,创建一个简单的HTML表单,向用户询问重要的参数——FTP服务器的访问信息、服务器上传的目录,以及完整的目录和上传文件的名字。下面这个例子就是这个表单的样式。

PHP上传文件代码列表B

<ol class="dp-xml">
<li class="alt"><span><strong><font color="#006699"><span class="tag"><span class="tag-name">html</span><span class="tag">></span></span></font></strong><span> </span></span></li>
<li class="">
<span></span><strong><font color="#006699"><span class="tag"><span class="tag-name">head</span><span class="tag">></span><span class="tag"></span><span class="tag-name">head</span><span class="tag">></span></span></font></strong><span> </span>
</li>
<li class="alt">
<span></span><strong><font color="#006699"><span class="tag"><span class="tag-name">body</span><span class="tag">></span></span></font></strong><span> </span>
</li>
<li class="">
<span></span><strong><font color="#006699"><span class="tag"><span class="tag-name">h2</span><span class="tag">></span></span></font></strong><span>Pleaseprovidethefollowinginformation:</span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">h2</span><span class="tag">></span></font></strong><span> </span>
</li>
<li class="alt"><span> </span></li>
<li class="">
<span></span><span class="tag"><strong><font color="#006699"></font></strong></span><span class="attribute"><font color="#ff0000">formenctype</font></span><span class="tag-name"><strong><font color="#006699">formenctype</font></strong></span><span>="multipart/form-data"</span><span class="attribute-value"><font color="#0000ff">method</font></span><span>="post"</span><span class="attribute"><font color="#ff0000">action</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"upload.php"</font></span><span class="tag"><strong><font color="#006699">></font></strong></span><span> </span>
</li>
<li class="alt">
<span></span><span class="tag"><strong><font color="#006699"></font></strong></span><span class="attribute"><font color="#ff0000">inputtype</font></span><span class="tag-name"><strong><font color="#006699">inputtype</font></strong></span><span>="hidden"</span><span class="attribute-value"><font color="#0000ff">name</font></span><span>="MAX_FILE_SIZE"</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"5000000"</font></span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span>
</li>
<li class="">
<span>Host</span><strong><font color="#006699"><span class="tag"><span class="tag-name">br</span><span class="tag">/></span></span></font></strong><span> </span>
</li>
<li class="alt">
<span></span><span class="tag"><strong><font color="#006699"></font></strong></span><span class="attribute"><font color="#ff0000">inputtype</font></span><span class="tag-name"><strong><font color="#006699">inputtype</font></strong></span><span>="text"</span><span class="attribute-value"><font color="#0000ff">name</font></span><span>="host"</span><strong><font color="#006699"><span class="tag">/></span><span class="tag"><span class="tag-name">p</span><span class="tag">/></span></span></font></strong><span> </span>
</li>
<li class="">
<span>Username</span><strong><font color="#006699"><span class="tag"><span class="tag-name">br</span><span class="tag">/></span></span></font></strong><span> </span>
</li>
<li class="alt">
<span></span><span class="tag"><strong><font color="#006699"></font></strong></span><span class="attribute"><font color="#ff0000">inputtype</font></span><span class="tag-name"><strong><font color="#006699">inputtype</font></strong></span><span>="text"</span><span class="attribute-value"><font color="#0000ff">name</font></span><span>="user"</span><strong><font color="#006699"><span class="tag">/></span><span class="tag"><span class="tag-name">p</span><span class="tag">/></span></span></font></strong><span> </span>
</li>
<li class="">
<span>Password</span><strong><font color="#006699"><span class="tag"><span class="tag-name">br</span><span class="tag">/></span></span></font></strong><span> </span>
</li>
<li class="alt">
<span></span><span class="tag"><strong><font color="#006699"></font></strong></span><span class="attribute"><font color="#ff0000">inputtype</font></span><span class="tag-name"><strong><font color="#006699">inputtype</font></strong></span><span>="password"</span><span class="attribute-value"><font color="#0000ff">name</font></span><span>="pass"</span><strong><font color="#006699"><span class="tag">/></span><span class="tag"><span class="tag-name">p</span><span class="tag">/></span></span></font></strong><span> </span>
</li>
<li class="">
<span>Destinationdirectory</span><strong><font color="#006699"><span class="tag"><span class="tag-name">br</span><span class="tag">/></span></span></font></strong><span> </span>
</li>
<li class="alt">
<span></span><span class="tag"><strong><font color="#006699"></font></strong></span><span class="attribute"><font color="#ff0000">inputtype</font></span><span class="tag-name"><strong><font color="#006699">inputtype</font></strong></span><span>="text"</span><span class="attribute-value"><font color="#0000ff">name</font></span><span>="dir"</span><strong><font color="#006699"><span class="tag">/></span><span class="tag"><span class="tag-name">p</span><span class="tag">/></span></span></font></strong><span> </span>
</li>
<li class="">
<span>File</span><strong><font color="#006699"><span class="tag"><span class="tag-name">br</span><span class="tag">/></span></span></font></strong><span> </span>
</li>
<li class="alt">
<span></span><span class="tag"><strong><font color="#006699"></font></strong></span><span class="attribute"><font color="#ff0000">inputtype</font></span><span class="tag-name"><strong><font color="#006699">inputtype</font></strong></span><span>="file"</span><span class="attribute-value"><font color="#0000ff">name</font></span><span>="file"</span><strong><font color="#006699"><span class="tag">/></span><span class="tag"><span class="tag-name">p</span><span class="tag">/></span></span></font></strong><span> </span>
</li>
<li class="">
<span></span><span class="tag"><strong><font color="#006699"></font></strong></span><span class="attribute"><font color="#ff0000">inputtype</font></span><span class="tag-name"><strong><font color="#006699">inputtype</font></strong></span><span>="submit"</span><span class="attribute-value"><font color="#0000ff">name</font></span><span>="submit"</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"UploadFile"</font></span><span class="tag"><strong><font color="#006699">/></font></strong></span><span> </span>
</li>
<li class="alt">
<span></span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">form</span><span class="tag">></span></font></strong><span> </span>
</li>
<li class="">
<span></span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">body</span><span class="tag">></span></font></strong><span> </span>
</li>
<li class="alt">
<span></span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">html</span><span class="tag">></span></font></strong><span> </span>
</li>
</ol>
Copier après la connexion

在这里,元素用来生成文件选择对话框,用户通过它来选择要被上传的文件。元素然后就把表单数据编码成为多个部分提交,这可以让PHP更容易地识别提交的文件组件。

第三步:创建PHP上传处理程序

一旦表单被提交给了Web服务器,下一步(也是最后一步)是使用PHP的FTP函数按照用户提供的访问信任书把它传输到目标服务器上。下面就是完成上述所有工作的脚本(upload.php)。

PHP上传文件代码列表C

<ol class="dp-xml">
<li class="alt"><span><span class="tag"></span><span class="tag-name">php</span><span> </span></span></li>
<li class=""><span>//getFTPaccessparameters  </span></li>
<li class="alt">
<span>$</span><span class="attribute">host</span><span>=$_POST['host'];  </span>
</li>
<li class="">
<span>$</span><span class="attribute">user</span><span>=$_POST['user'];$</span><span class="attribute">pass</span><span>=$_POST['pass'];  </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">destDir</span><span>=$_POST['dir'];  </span>
</li>
<li class="">
<span>$</span><span class="attribute">workDir</span><span>=</span><span class="attribute-value">"/usr/local/temp"</span><span>;//definethisasperlocalsystem  </span>
</li>
<li class="alt"><span>//gettemporaryfilenamefortheuploadedfile  </span></li>
<li class="">
<span>$</span><span class="attribute">tmpName</span><span>=</span><span class="attribute-value">basename</span><span>($_FILES['file']['tmp_name']);  </span>
</li>
<li class="alt"><span>//copyuploadedfileintocurrentdirectory  </span></li>
<li class=""><span>move_uploaded_file($_FILES['file']['tmp_name'],$workDir."/".$tmpName)ordie("Cannotmoveuploadedfiletoworkingdirectory");  </span></li>
<li class="alt"><span>//openconnection  </span></li>
<li class="">
<span>$</span><span class="attribute">conn</span><span>=</span><span class="attribute-value">ftp_connect</span><span>($host)ordie("Cannotinitiateconnectiontohost");  </span>
</li>
<li class="alt"><span>//sendaccessparameters  </span></li>
<li class=""><span>ftp_login($conn,$user,$pass)ordie("Cannotlogin");  </span></li>
<li class="alt"><span>//performfileupload  </span></li>
<li class="">
<span>$</span><span class="attribute">upload</span><span>=</span><span class="attribute-value">ftp_put</span><span>($conn,$destDir."/".$_FILES['file']['name'],$workDir."/".$tmpName,FTP_BINARY);  </span>
</li>
<li class="alt"><span>//checkuploadstatus  </span></li>
<li class=""><span>//displaymessage  </span></li>
<li class="alt"><span>if(!$upload){  </span></li>
<li class=""><span>echo"Cannotupload";  </span></li>
<li class="alt"><span>}else{  </span></li>
<li class=""><span>echo"Uploadcomplete";  </span></li>
<li class="alt"><span>}  </span></li>
<li class=""><span>//closetheFTPstream  </span></li>
<li class="alt"><span>ftp_close($conn);  </span></li>
<li class=""><span>//deletelocalcopyofuploadedfile  </span></li>
<li class="alt"><span>unlink($workDir."/".$tmpName)ordie("Cannotdeleteuploadedfilefromworkingdirectory--manualdeletionrecommended");  </span></li>
<li class="">
<span></span><span class="tag">?></span><span> </span>
</li>
</ol>
Copier après la connexion

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/446550.htmlTechArticle想知道上传文件的详细步骤吗,下面我就带大家一起详细分析一下吧。利用PHP,你总是可以有多种方式来完成某个特定的任务。我们就拿文...
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

7 fonctions PHP que je regrette de ne pas connaître auparavant 7 fonctions PHP que je regrette de ne pas connaître auparavant Nov 13, 2024 am 09:42 AM

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Apr 05, 2025 am 12:04 AM

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Programme PHP pour compter les voyelles dans une chaîne Programme PHP pour compter les voyelles dans une chaîne Feb 07, 2025 pm 12:12 PM

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Expliquez la liaison statique tardive en PHP (statique: :). Expliquez la liaison statique tardive en PHP (statique: :). Apr 03, 2025 am 12:04 AM

Liaison statique (statique: :) ​​implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Apr 03, 2025 am 12:03 AM

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.

See all articles