Table des matières
Articles qui pourraient vous intéresser :
Maison développement back-end tutoriel php Exemple d'analyse de la fonction de téléchargement de fichiers cURL compatible avec les compétences PHP php5 et php7

Exemple d'analyse de la fonction de téléchargement de fichiers cURL compatible avec les compétences PHP php5 et php7

Jun 25, 2018 pm 04:52 PM
curl php5 php7 兼容 文件上传

Cet article présente principalement la fonction de téléchargement de fichiers cURL compatible avec php5 et php7. Il analyse les jugements pertinents et les compétences opérationnelles spécifiques lors de l'utilisation de curl pour télécharger des fichiers pour les versions php5 et php7 avec des exemples. . Ce qui suit

L'exemple dans cet article décrit la fonction de téléchargement de fichiers cURL compatible avec php5 et php7. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Pourquoi devrais-je écrire cet exemple ?

Un projet doit être téléchargé via cURL récemment.

Je me suis souvenu que j'avais déjà fait une implémentation similaire, alors j'ai extrait le code précédent et utilisé le préfixe "@".

Mais la même méthode ne fonctionne plus maintenant ! Plus tard, on a découvert qu'il s'agissait d'un problème de compatibilité de version.

Dans l'esprit du partage open source et en même temps pour éviter d'oublier, j'ai écrit l'exemple de programme suivant.

Exemple de programme

Note spéciale :

Un total de 3 fichiers, tous placés dans le répertoire de test du web répertoire racine et assurez-vous que le répertoire est accessible en écriture. Les images téléchargées seront également enregistrées dans ce répertoire.

Si vous souhaitez exécuter le fichier programme dans un autre répertoire, vous devez modifier l'URL correspondante dans le code php, sinon l'exemple risque de ne pas s'exécuter.


<html>
<head>
  <title>上传示例</title>
</head>
<body>
  <p>下面上传文件到中间脚本:</p>
  <br />
  <form action="upload.php" method="post" enctype="multipart/form-data">
    选择文件:
    <input type="file" name="file" />
    <input type="submit" value="上传" />
  </form>
</body>
</html>
Copier après la connexion



<?php
/**
 * 接收通过浏览器上传的文件
 *
 * @author Straiway<straiway@qq.com>
 * @site  http://straiway.sinaapp.com
 */
if (empty($_FILES[&#39;file&#39;])) {
  exit(&#39;没有上传指定名称的文件&#39;);
}
// 先保存到本地,再上传
$file   = $_FILES[&#39;file&#39;];
$file_name = __DIR__ . "/{$file[&#39;name&#39;]}";
move_uploaded_file($_FILES[&#39;file&#39;][&#39;tmp_name&#39;], $file_name);
// 本地测试时,可能需要更改下面的URL
$ch = curl_init(&#39;http://localhost/test/upload_via_curl.php&#39;);
// 从php5.5开始,反对使用"@"前缀方式上传,可以使用CURLFile替代;
// 据说php5.6开始移除了"@"前缀上传的方式
if (class_exists(&#39;CURLFile&#39;)) {
  $file = new CURLFile($file_name);
  // 禁用"@"上传方法,这样就可以安全的传输"@"开头的参数值
  curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
} else {
  $file = "@{$file_name}";
}
// 从php5.2开始,要上传文件,必须给CURLOPT_POSTFIELDS传递数组,而不是字符串。
// 也只有传递数组,http头部的"Content-Type"才会设置成"multipart/form-data"
curl_setopt($ch, CURLOPT_POSTFIELDS, array(&#39;file_via_curl&#39; => $file));
// 将传输结果作为curl_exec的返回值,而不是直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$error = curl_error($ch);
if ($result) {
  $result_array = json_decode($result, true);
  if ($result_array) {
    if ($result_array[&#39;status&#39;]) {
      exit("上传成功!curl返回图片地址:{$result_array[&#39;data&#39;][&#39;url&#39;]}<br /><img src=&#39;{$result_array[&#39;data&#39;][&#39;url&#39;]}&#39; />");
    } else {
      exit("curl上传失败!错误信息:{$result[&#39;info&#39;]}");
    }
  } else {
    exit("发生错误,curl返回结果:{$result}");
  }
} else {
  exit(&#39;curl请求发生错误&#39; . var_export($error, true));
}
Copier après la connexion



<?php
/**
 * 接受通过curl上传的文件。
 *
 * @author Straiway<straiway@qq.com>
 * @site  http://straiway.sinaapp.com
 */
if (empty($_FILES[&#39;file_via_curl&#39;])) {
  $return = array(&#39;status&#39; => 0, &#39;info&#39; => &#39;没有上传指定名称的文件&#39;);
} else {
  // 保存文件
  $file = $_FILES[&#39;file_via_curl&#39;];
  // 重命名文件,便于识别
  $base_name = explode(&#39;.&#39;, $file[&#39;name&#39;]);
  $base_name[0] .= &#39;_upload_var_curl&#39;;
  $base_name = implode(&#39;.&#39;, $base_name);
  $file_name = __DIR__ . "/{$base_name}";
  if (move_uploaded_file($file[&#39;tmp_name&#39;], $file_name)) {
    // 本地测试时,可能需要更改下面的URL
    $url  = "http://localhost/test/{$base_name}";
    $return = array(&#39;status&#39; => 1, &#39;info&#39; => &#39;上传成功&#39;, &#39;data&#39; => array(&#39;url&#39; => $url));
  } else {
    $return = array(&#39;status&#39; => 0, &#39;info&#39; => &#39;上传失败&#39;);
  }
}
exit(json_encode($return));
Copier après la connexion


Références

http://php.net/manual/fr / function.curl-setopt.php

//www.jb51.net/article/139950.htm


Articles qui pourraient vous intéresser :

Méthode de mise en œuvre de requête de bloc PHP analyse compétences php

Exemple d'algorithme de recherche PHP analyse compétences php

Exemple d'algorithme de recherche PHP moitié (bisection) analyse compétences php


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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)

Quelle est la différence entre php5 et php8 Quelle est la différence entre php5 et php8 Sep 25, 2023 pm 01:34 PM

Les différences entre php5 et php8 concernent les performances, la structure du langage, le système de types, la gestion des erreurs, la programmation asynchrone, les fonctions de bibliothèque standard et la sécurité. Introduction détaillée : 1. Amélioration des performances. Par rapport à PHP5, PHP8 présente une énorme amélioration des performances. PHP8 introduit un compilateur JIT, qui peut compiler et optimiser certains codes d'exécution à haute fréquence, améliorant ainsi la vitesse d'exécution. PHP8 introduit de nouvelles structures et fonctions de langage. PHP8 prend en charge les paramètres nommés, permettant aux développeurs de transmettre les noms des paramètres au lieu de l'ordre des paramètres, etc.

Tutoriel sur la mise à jour de la version curl sous Linux ! Tutoriel sur la mise à jour de la version curl sous Linux ! Mar 07, 2024 am 08:30 AM

Pour mettre à jour la version curl sous Linux, vous pouvez suivre les étapes ci-dessous : Vérifiez la version actuelle de curl : Tout d'abord, vous devez déterminer la version de curl installée dans le système actuel. Ouvrez un terminal et exécutez la commande suivante : curl --version Cette commande affichera les informations sur la version actuelle de curl. Confirmer la version curl disponible : Avant de mettre à jour curl, vous devez confirmer la dernière version disponible. Vous pouvez visiter le site officiel de curl (curl.haxx.se) ou des sources de logiciels associées pour trouver la dernière version de curl. Téléchargez le code source de curl : à l'aide de curl ou d'un navigateur, téléchargez le fichier de code source pour la version curl de votre choix (généralement .tar.gz ou .tar.bz2).

Implémenter le téléchargement et le téléchargement de fichiers dans les documents Workerman Implémenter le téléchargement et le téléchargement de fichiers dans les documents Workerman Nov 08, 2023 pm 06:02 PM

Pour implémenter le téléchargement et le téléchargement de fichiers dans des documents Workerman, des exemples de code spécifiques sont requis Introduction : Workerman est un framework de communication réseau asynchrone PHP hautes performances, simple, efficace et facile à utiliser. Dans le développement réel, le téléchargement et le téléchargement de fichiers sont des exigences fonctionnelles courantes. Cet article explique comment utiliser le framework Workerman pour implémenter le téléchargement et le téléchargement de fichiers, et donne des exemples de code spécifiques. 1. Téléchargement de fichiers : le téléchargement de fichiers fait référence à l'opération de transfert de fichiers de l'ordinateur local vers le serveur. Ce qui suit est utilisé

Comment utiliser Laravel pour implémenter les fonctions de téléchargement et de téléchargement de fichiers Comment utiliser Laravel pour implémenter les fonctions de téléchargement et de téléchargement de fichiers Nov 02, 2023 pm 04:36 PM

Comment utiliser Laravel pour implémenter les fonctions de téléchargement et de téléchargement de fichiers Laravel est un framework Web PHP populaire qui fournit une multitude de fonctions et d'outils pour rendre le développement d'applications Web plus facile et plus efficace. L'une des fonctions couramment utilisées est le téléchargement et le téléchargement de fichiers. Cet article expliquera comment utiliser Laravel pour implémenter les fonctions de téléchargement et de téléchargement de fichiers, et fournira des exemples de code spécifiques. Téléchargement de fichiers Le téléchargement de fichiers fait référence au téléchargement de fichiers locaux sur le serveur pour le stockage. Dans Laravel, nous pouvons utiliser le téléchargement de fichiers

Comment gérer la redirection 301 des pages web en PHP Curl ? Comment gérer la redirection 301 des pages web en PHP Curl ? Mar 08, 2024 am 11:36 AM

Comment gérer la redirection 301 des pages web dans PHPCurl ? Lorsque vous utilisez PHPCurl pour envoyer des requêtes réseau, vous rencontrerez souvent un code d'état 301 renvoyé par la page Web, indiquant que la page a été redirigée définitivement. Afin de gérer correctement cette situation, nous devons ajouter des options spécifiques et une logique de traitement à la requête Curl. Ce qui suit présentera en détail comment gérer la redirection 301 des pages Web dans PHPCurl et fournira des exemples de code spécifiques. Principe de traitement de la redirection 301 La redirection 301 signifie que le serveur renvoie un 30

Comment utiliser gRPC pour implémenter le téléchargement de fichiers dans Golang ? Comment utiliser gRPC pour implémenter le téléchargement de fichiers dans Golang ? Jun 03, 2024 pm 04:54 PM

Comment implémenter le téléchargement de fichiers à l'aide de gRPC ? Créez des définitions de service de support, y compris des messages de demande et de réponse. Sur le client, le fichier à télécharger est ouvert et divisé en morceaux, puis diffusé sur le serveur via un flux gRPC. Côté serveur, des fragments de fichiers sont reçus et stockés dans un fichier. Le serveur envoie une réponse une fois le téléchargement du fichier terminé pour indiquer si le téléchargement a réussi.

La version la plus stable de Win10 La version la plus stable de Win10 Dec 25, 2023 pm 07:58 PM

De nombreux utilisateurs rencontreront des blocages ou des écrans bleus lors de l'utilisation de l'ordinateur. À l'heure actuelle, nous devons trouver la version Win10 la plus stable pour fonctionner. Dans l'ensemble, elle est très facile à utiliser et peut rendre votre utilisation quotidienne plus fluide. La version win10 la plus stable de l'histoire 1. Le véritable système original Win10 peut utiliser des opérations simples. Le système a été optimisé et présente une forte stabilité, sécurité et compatibilité. Les utilisateurs peuvent suivre les étapes pour obtenir la machine parfaite. rationalisé La version de win10 a été strictement rationalisée et de nombreuses fonctions et services inutiles ont été supprimés. Après la rationalisation, le système utilise moins le processeur et la mémoire et fonctionne plus rapidement. 3. Win10 Lite Edition 1909 est installé sur plusieurs ordinateurs avec différents modèles de matériel.

Simplifiez le traitement du téléchargement de fichiers avec les fonctions Golang Simplifiez le traitement du téléchargement de fichiers avec les fonctions Golang May 02, 2024 pm 06:45 PM

Réponse : Oui, Golang fournit des fonctions qui simplifient le traitement du téléchargement de fichiers. Détails : le type MultipartFile permet d'accéder aux métadonnées et au contenu des fichiers. La fonction FormFile obtient un fichier spécifique à partir de la demande de formulaire. Les fonctions ParseForm et ParseMultipartForm sont utilisées pour analyser les données de formulaire et les données de formulaire en plusieurs parties. L'utilisation de ces fonctions simplifie le processus de traitement des fichiers et permet aux développeurs de se concentrer sur la logique métier.

See all articles