Maison développement back-end PHP7 Que dois-je faire s'il y a une erreur lors du téléchargement du fichier curl dans php7 ?

Que dois-je faire s'il y a une erreur lors du téléchargement du fichier curl dans php7 ?

Aug 13, 2021 am 09:20 AM

Cet article vous présentera comment résoudre les erreurs de téléchargement de fichiers curl dans php7. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Que dois-je faire s'il y a une erreur lors du téléchargement du fichier curl dans php7 ?

Récemment, lorsque le projet est connecté à l'interface de la bibliothèque de matériaux du compte public WeChat, en utilisant la méthode curl post pour soumettre des fichiers de matériaux, j'ai constaté qu'il continue de demander

{"errcode": 41005, "errmsg " : "données multimédias manquantes" }

Contenu du code

$url = self::$add_material . $accessToken . '&type=' . $key;
$data = [
            'media' => '@' . $fileName,
            'form-data' => $fileInfo,
            'description' => json_encode([
                'title' => $fileName,
                'introduction' => ''
            ]),
        ];
self::init($url);
$data = is_array($data) ? http_build_query($data) : $data;
curl_setopt(self::$curl, CURLOPT_POST, 1);
curl_setopt(self::$curl, CURLOPT_POSTFIELDS, $data);
$info = curl_exec(self::$curl);
curl_close(self::$curl);
Copier après la connexion

Après avoir vérifié la documentation officielle, @ n'est plus pris en charge après php5.5. Vous devez utiliser CurlFile ou définir CURLOPT_SAFE_UPLOAD sur 1

Il y a un problème « @ » sur Requêtes POST en plusieurs parties.
Solution pour PHP 5.5 ou version ultérieure :
Activez CURLOPT_SAFE_UPLOAD.
Utilisez CURLFile au lieu de « @ ». les téléchargements ne sont plus pris en charge par erreur

Nous seuls pouvons honnêtement utiliser CurlFile pour le gérer

$url = self::$add_material . $accessToken . '&type=' . $key;
$data = [
            'media' => new \CURLFile($fileName),
            'form-data' => $fileInfo,
            'description' => json_encode([
                'title' => $fileName,
                'introduction' => ''
            ]),
        ];
self::init($url);
$data = is_array($data) ? http_build_query($data) : $data;
curl_setopt(self::$curl, CURLOPT_POST, 1);
curl_setopt(self::$curl, CURLOPT_POSTFIELDS, $data);
$info = curl_exec(self::$curl);
curl_close(self::$curl);
Copier après la connexion

Ensuite, j'ai trouvé trois gros pièges en écrivant comme celui-ci (je suis stupide)

1 Si CURLOPT_POSTFILEDS passe dans le tableau content_type. , ce sera multipart/form-data ; si CURLOPT_POSTFILEDS passe Si l'entrée est json ou key-value& content_type est x-www-form_urlencoded; mais WeChat prend en charge le tableau transmis par form-data

2. dans le tableau, http_build_query le transformera en tableau

3. CurlFile ne peut lire que le chemin dans le serveur. Si vous souhaitez télécharger une adresse sur Internet, vous devez d'abord la télécharger dans le répertoire temporaire du serveur, puis lisons le chemin du fichier (chemin absolu) via CurlFile

Nous ajustons ensuite le code

$url = self::$add_material . $accessToken . '&type=' . $key;
$data = [
            'media' => new \CURLFile($fileName),
            'form-data' => $fileInfo,
            'description' => json_encode([
                'title' => $fileName,
                'introduction' => ''
            ]),
        ];
self::init($url);
curl_setopt(self::$curl, CURLOPT_POST, 1);
curl_setopt(self::$curl, CURLOPT_POSTFIELDS, $data);
$info = curl_exec(self::$curl);
curl_close(self::$curl);
Copier après la connexion

Juste comme il faut. Quand j'ai pensé pouvoir m'en débarrasser, une erreur de syntaxe de notification est apparue dans php7 :

Array to conversion de chaîne

Ensuite, j'ai vérifié les informations et j'ai découvert que CURLOPT_POSTFIEDLS ne prend pas en charge les tableaux multidimensionnels

Mais l'erreur de syntaxe de l'avis a été demandée, nous pouvons le bloquer complètement

Continuer à ajuster le code

$url = self::$add_material . $accessToken . '&type=' . $key;
$data = [
            'media' => new \CURLFile($fileName),
            'form-data' => $fileInfo,
            'description' => json_encode([
                'title' => $fileName,
                'introduction' => ''
            ]),
        ];
self::init($url);
curl_setopt(self::$curl, CURLOPT_POST, 1);
@curl_setopt(self::$curl, CURLOPT_POSTFIELDS, $data);
$info = curl_exec(self::$curl);
curl_close(self::$curl);
Copier après la connexion
Le matériel a finalement été téléchargé avec succès

J'ai levé les yeux et j'ai vu qu'il faisait déjà nuit

J'étais si heureux que je me suis rapidement essuyé le nez et j'ai emballé mes affaires pour sortir du travail

Apprentissage recommandé :

Tutoriel vidéo 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

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

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)