目次
興味があるかもしれない記事:
ホームページ バックエンド開発 PHPチュートリアル php5、php7に対応したcURLファイルアップロード機能の解析例 PHPスキル

php5、php7に対応したcURLファイルアップロード機能の解析例 PHPスキル

Jun 25, 2018 pm 04:52 PM
curl php5 php7 互換性がある ファイルのアップロード

この記事では、php5 と php7 に対応した cURL ファイルのアップロード機能を中心に、curl を使用してファイルをアップロードする際の適切な判断と具体的な操作テクニックを分析します。

この記事の例では、php5 および php7 と互換性のある cURL ファイルのアップロード機能について説明します。参照用に全員と共有します。詳細は次のとおりです。

この例を作成する理由

最近プロジェクトを変更したため、次のことが必要になりました。 cURL を通じてファイルをアップロードします。

以前に同様の実装を行ったことを思い出したので、以前のコードを掘り出し、「@」プレフィックス メソッドを使用しました。

しかし、同じ方法は現在では機能しません。その後、バージョンの互換性の問題であることが判明しました。

オープンソース共有の精神に基づき、同時に忘れないようにするために、次のサンプル プログラムを作成しました。

サンプル プログラム

特記事項:

ファイルは合計 3 つあり、すべてWeb ルート ディレクトリ にアクセスし、そのディレクトリが書き込み可能であることを確認します。アップロードされた画像もこのディレクトリに保存されます。

プログラム ファイルを別のディレクトリで実行する場合は、PHP コード内の関連する URL を変更する必要があります。変更しないと、サンプルが実行されない可能性があります。


<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>
ログイン後にコピー



<?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));
}
ログイン後にコピー



<?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));
ログイン後にコピー


参考文献

http://php.net/manual/en/function.curl-setopt 。 php

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


興味があるかもしれない記事:

#PHP ブロッククエリ実装方法分析 php スキル

PHP ハーフ検索アルゴリズム例分析 php スキル

PHP ハーフ (ハーフ) ) 検索アルゴリズム例分析 PHP スキル


以上がphp5、php7に対応したcURLファイルアップロード機能の解析例 PHPスキルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

php5とphp8の違いは何ですか php5とphp8の違いは何ですか Sep 25, 2023 pm 01:34 PM

php5 と php8 の違いは、パフォーマンス、言語構造、型システム、エラー処理、非同期プログラミング、標準ライブラリ関数、セキュリティの点です。詳細な紹介: 1. パフォーマンスの向上. PHP5 と比較して、PHP8 はパフォーマンスが大幅に向上しています. PHP8 では、高頻度の実行コードをコンパイルおよび最適化できる JIT コンパイラーが導入されており、それによって実行速度が向上しています; 2. 言語構造の改善、 PHP8 では、いくつかの新しい言語構造と関数が導入されており、PHP8 では名前付きパラメータがサポートされており、開発者はパラメータの順序などの代わりにパラメータ名を渡すことができます。

Linux での CURL バージョンの更新に関するチュートリアル! Linux での CURL バージョンの更新に関するチュートリアル! Mar 07, 2024 am 08:30 AM

Linux でカールのバージョンを更新するには、以下の手順に従います。 現在のカールのバージョンを確認します。 まず、現在のシステムにインストールされているカールのバージョンを確認する必要があります。ターミナルを開き、次のコマンドを実行します。curl --version このコマンドは、現在のcurlバージョン情報を表示します。利用可能なcurlのバージョンを確認する:curlを更新する前に、利用可能な最新バージョンを確認する必要があります。 Curl の公式 Web サイト (curl.haxx.se) または関連ソフトウェア ソースにアクセスして、curl の最新バージョンを見つけることができます。 Curl ソース コードをダウンロードする:curl またはブラウザを使用して、選択した CURL バージョンのソース コード ファイル (通常は .tar.gz または .tar.bz2) をダウンロードします。

Workerman ドキュメントにファイルのアップロードとダウンロードを実装する Workerman ドキュメントにファイルのアップロードとダウンロードを実装する Nov 08, 2023 pm 06:02 PM

Workerman ドキュメントでファイルのアップロードとダウンロードを実装するには、特定のコード サンプルが必要です はじめに: Workerman は、シンプル、効率的、使いやすい高性能 PHP 非同期ネットワーク通信フレームワークです。実際の開発では、ファイルのアップロードとダウンロードが一般的な機能要件となりますが、この記事では、Workerman フレームワークを使用してファイルのアップロードとダウンロードを実装する方法と、具体的なコード例を紹介します。 1. ファイル アップロード: ファイル アップロードとは、ローカル コンピューター上のファイルをサーバーに転送する操作を指します。以下が使用されます

Laravelを使用してファイルのアップロードおよびダウンロード機能を実装する方法 Laravelを使用してファイルのアップロードおよびダウンロード機能を実装する方法 Nov 02, 2023 pm 04:36 PM

Laravel を使用してファイルのアップロードおよびダウンロード機能を実装する方法 Laravel は、Web アプリケーションの開発をより簡単かつ効率的にするための豊富な機能とツールを提供する人気のある PHP Web フレームワークです。よく使用される機能の 1 つは、ファイルのアップロードとダウンロードです。この記事では、Laravelを使用してファイルのアップロードおよびダウンロード機能を実装する方法と、具体的なコード例を紹介します。ファイルのアップロード ファイルのアップロードとは、ローカル ファイルを保存するためにサーバーにアップロードすることを指します。 Laravelではファイルアップロードを使用できます

PHP Curl で Web ページの 301 リダイレクトを処理するにはどうすればよいですか? PHP Curl で Web ページの 301 リダイレクトを処理するにはどうすればよいですか? Mar 08, 2024 am 11:36 AM

PHPCurl で Web ページの 301 リダイレクトを処理するにはどうすればよいですか? PHPCurl を使用してネットワーク リクエストを送信すると、Web ページから返される 301 ステータス コードが頻繁に発生します。これは、ページが永続的にリダイレクトされたことを示します。この状況を正しく処理するには、いくつかの特定のオプションと処理ロジックを Curl リクエストに追加する必要があります。以下では、PHPCurl で Web ページの 301 リダイレクトを処理する方法を詳しく紹介し、具体的なコード例を示します。 301 リダイレクトの処理原則 301 リダイレクトとは、サーバーが 30 を返すことを意味します。

gRPC を使用して Golang でファイルのアップロードを実装するにはどうすればよいですか? gRPC を使用して Golang でファイルのアップロードを実装するにはどうすればよいですか? Jun 03, 2024 pm 04:54 PM

gRPC を使用してファイルのアップロードを実装するにはどうすればよいですか?リクエストおよびレスポンスメッセージを含むサポートサービス定義を作成します。クライアントでは、アップロードされるファイルが開かれてチャンクに分割され、gRPC ストリーム経由でサーバーにストリーミングされます。サーバー側では、ファイル チャンクが受信され、ファイルに保存されます。ファイルのアップロードが完了すると、サーバーはアップロードが成功したかどうかを示す応答を送信します。

Win10 の最も安定したバージョン Win10 の最も安定したバージョン Dec 25, 2023 pm 07:58 PM

多くのユーザーは、コンピューターの操作中にフリーズやブルー スクリーンに遭遇することがありますが、現時点では、最も安定して動作する Win10 バージョンを見つける必要があります。全体的に非常に使いやすく、毎日の使用がスムーズになります。史上最も安定したWin10バージョン 1. Win10純正のオリジナルシステム. ユーザーは簡単な操作を使用できます. システムは最適化されており、強力な安定性、セキュリティと互換性を備えています. ユーザーは手順に従って完璧なマシンを達成できます. 2. ロシアのマスター合理化 win10 のバージョンは厳密に合理化され、多くの不要な機能やサービスが削除されました。合理化後は、システムの CPU とメモリの使用量が減り、動作が速くなります。 3. Win10 Lite Edition 1909 は、異なるハードウェア モデルの複数のコンピューターにインストールされています。

Golang関数でファイルアップロード処理を簡素化 Golang関数でファイルアップロード処理を簡素化 May 02, 2024 pm 06:45 PM

回答: はい、Golang はファイルのアップロード処理を簡素化する機能を提供します。詳細: MultipartFile タイプは、ファイルのメタデータとコンテンツへのアクセスを提供します。 FormFile 関数は、フォーム要求から特定のファイルを取得します。 ParseForm 関数と ParseMultipartForm 関数は、フォーム データとマルチパート フォーム データを解析するために使用されます。これらの機能を使用すると、ファイル処理プロセスが簡素化され、開発者はビジネス ロジックに集中できるようになります。

See all articles