Rumah pembangunan bahagian belakang PHP7 Apakah yang perlu saya lakukan jika terdapat ralat dalam muat naik fail curl dalam php7?

Apakah yang perlu saya lakukan jika terdapat ralat dalam muat naik fail curl dalam php7?

Aug 13, 2021 am 09:20 AM

Artikel ini akan memperkenalkan kepada anda cara menyelesaikan ralat muat naik fail curl dalam php7. Ia mempunyai nilai rujukan tertentu Rakan-rakan yang memerlukan boleh merujuk kepadanya.

Apakah yang perlu saya lakukan jika terdapat ralat dalam muat naik fail curl dalam php7?

Baru-baru ini, apabila projek disambungkan ke antara muka perpustakaan bahan akaun awam WeChat, saya menggunakan kaedah siaran curl untuk menyerahkan fail bahan, dan saya mendapati ia terus menggesa

{"errcode":41005,"errmsg":"data media tiada"}

Kandungan kod

$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);
Salin selepas log masuk

Selepas menyemak dokumentasi rasmi, @ tidak lagi disokong selepas php5.5 Anda mesti menggunakan CurlFile atau tetapkan CURLOPT_SAFE_UPLOAD kepada 1

Terdapat isu "@" pada permintaan POST berbilang bahagian atau kemudian:
Dayakan CURLOPT_SAFE_UPLOAD
Gunakan CURLFile dan bukannya "@".

Dalam php7 curl akan menggesa ralat jika anda menukar CURLOPT_SAFE_UPLOAD seperti berikut:

curl_setopt (): Melumpuhkan muat naik selamat tidak lagi disokong kerana kesilapan

Kami hanya boleh menggunakan CurlFile untuk mengendalikannya secara jujur

$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);
Salin selepas log masuk

Kemudian kami mendapati tiga perangkap besar dalam penulisan seperti ini ( Saya bodoh)

1. Jika CURLOPT_POSTFILEDS melepasi dalam array content_type, ia adalah multipart/form-data jika CURLOPT_POSTFILEDS lulus dalam json atau key-value& content_type, ia adalah x-www-form_urlencoded; ; tetapi WeChat menyokong tatasusunan yang diluluskan oleh data borang

2. Jika terdapat objek dalam tatasusunan, http_build_query akan mengubahnya menjadi tatasusunan

3. CurlFile hanya boleh membaca laluan dalam pelayan. Jika anda ingin memuat naik alamat di Internet, anda perlu memuat turun fail sementara ke pelayan terlebih dahulu, baca laluan fail (laluan mutlak) melalui CurlFile

Jadi kami kemudian. melaraskan kod

$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);
Salin selepas log masuk
Apabila saya fikir saya boleh menyingkirkannya, php7 ada di sini Ralat sintaks notis muncul:

Penukaran tatasusunan kepada rentetan

Kemudian saya menyemak maklumat dan mendapati bahawa CURLOPT_POSTFIEDLDS tidak menyokong tatasusunan berbilang dimensi

Tetapi ralat sintaks notis yang digesa, kami pasti boleh melakukannya Sekat

Teruskan melaraskan kod

$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);
Salin selepas log masuk
Akhirnya bahan berjaya dimuat naik

Saya mendongak dan melihat keadaan sudah gelap

Saya sangat gembira sehingga saya cepat-cepat mengelap hidung dan membersihkan selesai.

Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika terdapat ralat dalam muat naik fail curl dalam php7?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)