Home Backend Development PHP Tutorial Compatible with cURL file upload function of php5 and php7

Compatible with cURL file upload function of php5 and php7

Jun 01, 2018 am 11:49 AM
curl php5 php7

This article mainly introduces the cURL file upload function that is compatible with php5 and php7. It analyzes the relevant judgments and specific operation techniques for php5 and php7 versions when using curl to upload files. Friends in need can refer to it. Next

The example in this article describes the cURL file upload function that is compatible with php5 and php7. Share it with everyone for your reference, the details are as follows:

Why write this example

I recently modified a project and needed to upload files through cURL .

I remembered that I had done a similar implementation before, so I dug out the previous code and used the "@" prefix method.

But the same method doesn’t work now! Later it was discovered that it was a version compatibility issue.

In the spirit of open source sharing and at the same time to prevent myself from forgetting, I wrote the following sample program.

Sample program

Special note:

There are 3 files in total, all placed in the test directory of the web root directory , and ensure that the directory is writable. Uploaded images will also be saved in this directory.

If you want to run the program file in another directory, you must change the relevant URL in the php code, otherwise the example may not run.

<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>
Copy after login

<?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));
}
Copy after login

<?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));
Copy after login

Related recommendations:

Configuring php in centos7

Analysis of PHP block query implementation method

The above is the detailed content of Compatible with cURL file upload function of php5 and php7. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to realize the mutual conversion between CURL and python requests in python How to realize the mutual conversion between CURL and python requests in python May 03, 2023 pm 12:49 PM

Both curl and Pythonrequests are powerful tools for sending HTTP requests. While curl is a command-line tool that allows you to send requests directly from the terminal, Python's requests library provides a more programmatic way to send requests from Python code. The basic syntax for converting curl to Pythonrequestscurl command is as follows: curl[OPTIONS]URL When converting curl command to Python request, we need to convert the options and URL into Python code. Here is an example curlPOST command: curl-XPOST https://example.com/api

What is the difference between php5 and php8 What is the difference between php5 and php8 Sep 25, 2023 pm 01:34 PM

The differences between php5 and php8 are in terms of performance, language structure, type system, error handling, asynchronous programming, standard library functions and security. Detailed introduction: 1. Performance improvement. Compared with PHP5, PHP8 has a huge improvement in performance. PHP8 introduces a JIT compiler, which can compile and optimize some high-frequency execution codes, thereby improving the running speed; 2. Improved language structure, PHP8 introduces some new language structures and functions. PHP8 supports named parameters, allowing developers to pass parameter names instead of parameter order, etc.

From start to finish: How to use php extension cURL to make HTTP requests From start to finish: How to use php extension cURL to make HTTP requests Jul 29, 2023 pm 05:07 PM

From start to finish: How to use php extension cURL for HTTP requests Introduction: In web development, it is often necessary to communicate with third-party APIs or other remote servers. Using cURL to make HTTP requests is a common and powerful way. This article will introduce how to use PHP to extend cURL to perform HTTP requests, and provide some practical code examples. 1. Preparation First, make sure that php has the cURL extension installed. You can execute php-m|grepcurl on the command line to check

Tutorial on updating curl version under Linux! Tutorial on updating curl version under Linux! Mar 07, 2024 am 08:30 AM

To update the curl version under Linux, you can follow the steps below: Check the current curl version: First, you need to determine the curl version installed in the current system. Open a terminal and execute the following command: curl --version This command will display the current curl version information. Confirm available curl version: Before updating curl, you need to confirm the latest version available. You can visit curl's official website (curl.haxx.se) or related software sources to find the latest version of curl. Download the curl source code: Using curl or a browser, download the source code file for the curl version of your choice (usually .tar.gz or .tar.bz2

PHP8.1 released: Introducing curl for concurrent processing of multiple requests PHP8.1 released: Introducing curl for concurrent processing of multiple requests Jul 08, 2023 pm 09:13 PM

PHP8.1 released: Introducing curl for concurrent processing of multiple requests. Recently, PHP officially released the latest version of PHP8.1, which introduced an important feature: curl for concurrent processing of multiple requests. This new feature provides developers with a more efficient and flexible way to handle multiple HTTP requests, greatly improving performance and user experience. In previous versions, handling multiple requests often required creating multiple curl resources and using loops to send and receive data respectively. Although this method can achieve the purpose

How to handle 301 redirection of web pages in PHP Curl? How to handle 301 redirection of web pages in PHP Curl? Mar 08, 2024 am 11:36 AM

How to handle 301 redirection of web pages in PHPCurl? When using PHPCurl to send network requests, you will often encounter a 301 status code returned by the web page, indicating that the page has been permanently redirected. In order to handle this situation correctly, we need to add some specific options and processing logic to the Curl request. The following will introduce in detail how to handle 301 redirection of web pages in PHPCurl, and provide specific code examples. 301 redirect processing principle 301 redirect means that the server returns a 30

what is linux curl what is linux curl Apr 20, 2023 pm 05:05 PM

In Linux, curl is a very practical tool for transferring data to and from the server. It is a file transfer tool that uses URL rules to work under the command line; it supports file upload and download, and is a comprehensive transfer tool. . Curl provides a lot of very useful functions, including proxy access, user authentication, ftp upload and download, HTTP POST, SSL connection, cookie support, breakpoint resume and so on.

How to install mongo extension in php7.0 How to install mongo extension in php7.0 Nov 21, 2022 am 10:25 AM

How to install the mongo extension in php7.0: 1. Create the mongodb user group and user; 2. Download the mongodb source code package and place the source code package in the "/usr/local/src/" directory; 3. Enter "src/" directory; 4. Unzip the source code package; 5. Create the mongodb file directory; 6. Copy the files to the "mongodb/" directory; 7. Create the mongodb configuration file and modify the configuration.

See all articles