国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - PHP教程 - 可兼容php5與php7的cURL文件上傳功能實例分析

可兼容php5與php7的cURL文件上傳功能實例分析

2019-10-08 10:18straiway PHP教程

這篇文章主要介紹了可兼容php5與php7的cURL文件上傳功能,結合實例形式分析了針對php5與php7版本在使用curl進行文件上傳時的相關判定與具體操作技巧,需要的朋友可以參考下

本文實例講述了可兼容php5與php7的cURL文件上傳功能。分享給大家供大家參考,具體如下:

為啥要寫這個示例

最近修改一個項目,需要通過cURL上傳文件。

記得之前做過類似實現的,于是翻出來之前的代碼,使用的是“@”前綴方式。

但同樣的方法現在不行了!后來發現,是版本兼容問題。

奔著開源分享的精神,同時避免自己遺忘,于是寫了下面的示例程序。

示例程序

特別說明:

共3個文件,都放在web根目錄的test目錄下,同時保證該目錄可寫。上傳的圖片也會保存在該目錄。

如果要將程序文件放在其他目錄運行,必須更改php代碼中的相關URL,否則示例可能無法運行。

01<html>
02<head>
03  <title>上傳示例</title>
04</head>
05<body>
06  <div>下面上傳文件到中間腳本:</div>
07  <br />
08  <form action="upload.php" method="post" enctype="multipart/form-data">
09    選擇文件:
10    <input type="file" name="file" />
11    <input type="submit" value="上傳" />
12  </form>
13</body>
14</html>
01<?php
02/**
03 * 接收通過瀏覽器上傳的文件
04 *
05 * @author Straiway<straiway@qq.com>
07 */
08if (empty($_FILES['file'])) {
09  exit('沒有上傳指定名稱的文件');
10}
11// 先保存到本地,再上傳
12$file   = $_FILES['file'];
13$file_name = __DIR__ . "/{$file['name']}";
14move_uploaded_file($_FILES['file']['tmp_name'], $file_name);
15// 本地測試時,可能需要更改下面的URL
17// 從php5.5開始,反對使用"@"前綴方式上傳,可以使用CURLFile替代;
18// 據說php5.6開始移除了"@"前綴上傳的方式
19if (class_exists('CURLFile')) {
20  $file = new CURLFile($file_name);
21  // 禁用"@"上傳方法,這樣就可以安全的傳輸"@"開頭的參數值
22  curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
23} else {
24  $file = "@{$file_name}";
25}
26// 從php5.2開始,要上傳文件,必須給CURLOPT_POSTFIELDS傳遞數組,而不是字符串。
27// 也只有傳遞數組,http頭部的"Content-Type"才會設置成"multipart/form-data"
28curl_setopt($ch, CURLOPT_POSTFIELDS, array('file_via_curl' => $file));
29// 將傳輸結果作為curl_exec的返回值,而不是直接輸出
30curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
31$result = curl_exec($ch);
32$error = curl_error($ch);
33if ($result) {
34  $result_array = json_decode($result, true);
35  if ($result_array) {
36    if ($result_array['status']) {
37      exit("上傳成功!curl返回圖片地址:{$result_array['data']['url']}<br /><img src='{$result_array['data']['url']}' />");
38    } else {
39      exit("curl上傳失敗!錯誤信息:{$result['info']}");
40    }
41  } else {
42    exit("發生錯誤,curl返回結果:{$result}");
43  }
44} else {
45  exit('curl請求發生錯誤' . var_export($error, true));
46}
01<?php
02/**
03 * 接受通過curl上傳的文件。
04 *
05 * @author Straiway<straiway@qq.com>
07 */
08if (empty($_FILES['file_via_curl'])) {
09  $return = array('status' => 0, 'info' => '沒有上傳指定名稱的文件');
10} else {
11  // 保存文件
12  $file = $_FILES['file_via_curl'];
13  // 重命名文件,便于識別
14  $base_name = explode('.', $file['name']);
15  $base_name[0] .= '_upload_var_curl';
16  $base_name = implode('.', $base_name);
17  $file_name = __DIR__ . "/{$base_name}";
18  if (move_uploaded_file($file['tmp_name'], $file_name)) {
19    // 本地測試時,可能需要更改下面的URL
20    $url  = "http://localhost/test/{$base_name}";
21    $return = array('status' => 1, 'info' => '上傳成功', 'data' => array('url' => $url));
22  } else {
23    $return = array('status' => 0, 'info' => '上傳失敗');
24  }
25}
26exit(json_encode($return));

參考資料

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

希望本文所述對大家PHP程序設計有所幫助。

延伸 · 閱讀

精彩推薦
452
主站蜘蛛池模板: 欧美三级电影在线播放 | 国产在线观看一区 | 精品一区二区三区四区 | 久久先锋| 日韩欧美国产一区二区 | 欧美日韩网站 | 久久精品一区二区国产 | 成人av一区二区三区 | 免费的av网站 | 亚洲国产精品成人 | 亚洲国产成人av | 成人免费视频网站在线看 | 国产视频一区在线 | 精品久久久久久久久久久久久久久久久久久 | 欧美一区二区在线刺激视频 | 亚洲欧美激情精品一区二区 | 伊人久久国产 | 国产精品日韩三级 | 午夜视频免费 | 视频精品一区二区 | 一级成人av | 欧美日韩综合一区 | 国产精品一区二区av | 久久精品国产99国产 | 亚洲成人av在线 | 99久色| 欧美日韩亚洲二区 | av成人一区二区 | 国产精品美女久久久久久久久久久 | 欧美综合久久 | 看av片 | 亚洲高清视频在线观看 | 亚洲专区 变态 另类 | 天天干女人网 | 久久性| 在线观看日韩av | 国产高清久久久 | 久久久亚洲国产美女国产盗摄 | 1区2区视频 | 久久精品亚洲一区 | 欧美日韩一区二区在线观看 |