我在创建一个新的/简单的PHP脚本/函数时遇到了问题,该脚本/函数使用cURL将简单文件(video.mp4)从本地服务器上传到Azure存储-使用身份验证密钥的blob容器。我不想(由于其他原因)使用SDK和/或多个文件/库。我只需要一个函数- fileUpload -就是这样。
我能够得到的关键使用另一个函数没有任何问题,但当我试图上传文件使用下面的fileUpload函数我面临着以下错误InvalidHeaderValue
其中一个HTTP标头的值格式不正确。RequestId:798508 a1 - 701 e-0055- 0 e82-efab 9 f000000时间:2023-09- 25 T07:34:50. 5926245 ZContent-Length-1
function uploadFileToAzureBlob($key, $container, $azureUrl, $uploadedFile, $fileArray){
$url = $azureUrl.$container."/".pathinfo($uploadedFile["file"], PATHINFO_FILENAME);
echo json_encode($uploadedFile)."<br>";
echo json_encode($fileArray)."<br>";
echo filesize($uploadedFile["file"])."<br>";
$ch = curl_init();
echo $url."<br>";
// Open file
$fileHandle = fopen($uploadedFile["file"], 'r');
// Set the URL
curl_setopt($ch, CURLOPT_URL, $url);
// Set the HTTP method to PUT
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
// Set the body of the request to the contents of the file
curl_setopt($ch, CURLOPT_INFILE, $fileHandle);
$headers = array(
"Transfer-Encoding" => "chunked"
,"x-ms-blob-type" => "BlockBlob"
,'x-ms-version'=>'2017-11-09'
, "x-ms-date" => gmdate('D, d M Y H:i:s T', time())
,"Content-Type" => $fileArray["type"]
,"Content-Length" => filesize($uploadedFile["file"])
,"Authorization"=>$key);
echo json_encode($headers)."<br>";
curl_setopt($ch, CURLOPT_HTTPHEADER, array_map(function($v,$k){
return $k.":".$v;
},$headers,array_keys($headers)));
echo $fileArray["size"]."<br>";
// Set the size of the file for the Content-Length header
curl_setopt($ch, CURLOPT_INFILESIZE, $fileArray["size"]);
curl_setopt($ch, CURLOPT_UPLOAD, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
// Execute the CURL session
$response = curl_exec($ch);
echo json_encode($response)."<br>";
echo "curl:::: " .json_encode(curl_getinfo($ch))."<br>";
// Close file and CURL session
fclose($fileHandle);
curl_close($ch);
return $response;
}
你能帮帮我吗。提前感谢!
1条答案
按热度按时间kokeuurv1#
将视频上传到Azure blob存储的PHP cURL
要使用**
Put blob
**请求将视频从本地上传到Azure blob存储,您可以使用以下PHP代码。我使用了一个5 MB的示例视频文件来上传Azure Blob存储。
验证码:
**控制台:**x1c 0d1x
输出:
入口:
参考:
Put Blob(REST API)- Azure存储|微软学习