php ОтправкаданныхиспользуяFormDataбезJS
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php ОтправкаданныхиспользуяFormDataбезJS相关的知识,希望对你有一定的参考价值。
<?php
/**
* Отправка данных используя FormData
* Class FormDataSender
* @category Starliner
* @package Utils
* @author Elovskiy I.V. <elovskigor@gmail.com> <i.elovsky@starliner.ru>
*/
class FormDataSender {
/**
* @param array $fields
* @param array $files
* @param string|null $boundary
*
* @return array
*/
protected function buildDataFiles($fields, $files, $boundary) {
$boundary = $boundary ?? uniqid();
$data = '';
$eol = "\r\n";
$delimiter = str_repeat('-', 13) . $boundary;
foreach ($fields as $name => $content) {
$data .= "--" . $delimiter . $eol . 'Content-Disposition: form-data; name="' . $name . "\"" . $eol . $eol . $content . $eol;
}
//. 'Content-Type: image/png'.$eol
foreach ($files as $name => $content) {
$data .= "--" . $delimiter . $eol . 'Content-Disposition: form-data; name="' . $name . '"; filename="' . $name . '"' . $eol . 'Content-Transfer-Encoding: binary' . $eol;
$data .= $eol;
$data .= $content . $eol;
}
$data .= "--" . $delimiter . "--" . $eol;
return array('post_data' => $data, 'delimiter' => $delimiter);
}
/**
* @param string $url
* @param array $fields Массив данных для отправки
* @param array $filenames Список файлов array('/tmp/1.jpg', '/tmp/2.png')
* @param string|null $boundary Разделитель
*
* @return array
*/
public function send($url, $fields, $filenames = array(), $boundary = null) {
$files = array();
foreach ($filenames as $f){
$files[$f] = file_get_contents($f);
}
$build = $this->buildDataFiles($fields, $files, $boundary);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
//CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $build['post_data'],
CURLOPT_HTTPHEADER => array(
//"Authorization: Bearer $TOKEN",
"Content-Type: multipart/form-data; boundary=" . $build['delimiter'],
"Content-Length: " . strlen($build['post_data'])
),
));
$response = curl_exec($curl);
$info = curl_getinfo($curl);
$err = curl_error($curl);
curl_close($curl);
return array('response' => $response, 'info' => $info, 'err' => $err);
}
}
以上是关于php ОтправкаданныхиспользуяFormDataбезJS的主要内容,如果未能解决你的问题,请参考以下文章
php ОтправкаданныхиспользуяFormDataбезJS
sh Добавитьправоназаписьдлягруппыврепозиторий,которыйнаходитсянасервере
Erlangе демо
比特币不能购买特斯拉了!今日比特币狂跌背后的原因……
sh Cоздатьtar-архивпроектаизаписатьеговфайл~/ prj.tar。 Внутринегофайлыбудутнаходитсявпапкеproj-1.2.3
php Хелпердляслужбы$ b $bдоставкиСдэк,обновляеттолькоПВЗ,Безсинхронизациигородов