亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將巴什中的卷曲轉換為php

將巴什中的卷曲轉換為php

PHP
陪伴而非守候 2022-09-17 22:07:35
好吧,這是我在bash中的cURL腳本,可以正常工作!#!/bin/bashfileid="1yvklOFopnep8twiqAQecmMUoAbQVzU0r"filename="MyFile.mp4"curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/nullcurl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${fileid}" -o ${filename}但是,我試圖將其重寫為一個簡單的PHP腳本,盡管它似乎無法正常工作;代碼如下:<?php    define('FILENAME', 'MyFile.mp4');    define('FILE_ID', '1yvklOFopnep8twiqAQecmMUoAbQVzU0r');    $GlobalFileHandle = null;    function get_confirm($id)    {        $ch = curl_init();        curl_setopt($ch, CURLOPT_URL, "https://drive.google.com/uc?export=download&id=".$id);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);        curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');        $result = curl_exec($ch);        if (curl_errno($ch)) {            echo 'Error:' . curl_error($ch);        }        curl_close($ch);        preg_match_all("/confirm=([0-9A-Za-z]+)&/", $result, $output_array);        return $output_array[1][0];    }    function get_file($id, $confirm)    {        global $GlobalFileHandle;        $GlobalFileHandle = fopen(FILENAME, 'w+');        $ch = curl_init();        curl_setopt($ch, CURLOPT_URL, 'https://drive.google.com/uc?export=download&confirm='.$confirm.'&id='.$id);        curl_setopt($ch, CURLOPT_FILE, $GlobalFileHandle);        curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'curlWriteFile');        curl_exec($ch);        if (curl_errno($ch)) {            echo 'Error:' . curl_error($ch);        }        curl_close($ch);        fclose($GlobalFileHandle);    }但是,文件似乎沒有被下載 &'我的文件.mp4仍然為空?
查看完整描述

2 回答

?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

您似乎在這里以無效的方式混合了幾個選項。

由于您設置了數據,因此由 返回CURLOPT_RETURNTRANSFERcurl_exec()

所以

$data = curl_exec($ch);
fwrite($GlobalFileHandle, $data);

應該做這個伎倆。如果要使用回調,則根本不設置。CURLOPT_RETURNTRANSFER

另一個選項是,設置為將數據直接寫入文件句柄(則不要設置):CURLOPT_FILECURLOPT_RETURNTRANSFER

curl_setopt(CURL_FILE, $GlobalFileHandle);

此外,您需要將 設置為您的餅干,以便正確讀取餅干。該選項僅設置存儲 Cookie 的文件。您需要兩者,因此請添加CURLOPT_COOKIEFILECURLOPT_COOKIEJAR

curl_setopt(CURL_COOKIEFILE, 'cookies.txt');

有關更多詳細信息,請參閱 PHP 手冊頁curl_setopt


查看完整回答
反對 回復 2022-09-17
?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

似乎函數中缺少一個。curl_execget_file



查看完整回答
反對 回復 2022-09-17
  • 2 回答
  • 0 關注
  • 156 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號