06.12.2022

Скрипт, отправляющий файлы методом POST

Скрипт передачи файлов методом POST предоставлен Арсеньевым Алексеем (больше известным на нашем форуме как JIEXA).

<?
# (c) Арсеньев Алексей(php-jiexa@mail.ru) & Vyrus
# $host - Удаленный хост
# $port - Порт на удалённом хосте
# $path - Путь до страницы, которая принимает файл
# $filePath - Путь до файла, который отсылаем
# $fileField - Имя поля file на удаленном хосте
# $fields - Дополнительные поля. Пример array("email" => "php-jiexa@mail.ru");

function sendFile($host, $port="80", $path, $filePath, $fileName, $fileField, $fields = array())
{
  define("CRLF", "\r\n");
  define("DCRLF", CRLF.CRLF);

  $boundary = "---------------------".substr(md5(rand(0,32000)),0,10);

  $fieldsData = "";

  if(count($fields) > "0"):
  foreach($fields as $field => $value)
  {
    $fieldsData .=  "--".$boundary.CRLF;
    $fieldsData .=  "Content-Disposition: form-data; name=\"".$field."\"".DCRLF;
    $fieldsData .=  urlencode($value).CRLF;
  }
  endif;

  $fileHeaders = "--".$boundary.CRLF;
  $fileHeaders .= "Content-Disposition: form-data; name=\"".$fileField."\"; filename=\"".$fileName."\"".CRLF;
  $fileHeaders .= "Content-Type: ".mime_content_type($filePath).DCRLF;
  $fileHeadersTail = CRLF."--".$boundary."--".CRLF;

  $filesize = filesize($filePath);
  $contentLength = strlen($fieldsData) + strlen($fileHeaders) + $filesize + strlen($fileHeadersTail);

  $headers  = "POST $path HTTP/1.0".CRLF;
  $headers .= "Host: ".$host.CRLF;
  $headers .= "Referer: ".$host.CRLF;
  $headers .= "Content-type: multipart/form-data, boundary=".$boundary.CRLF;
  $headers .= "Content-length: ".$contentLength.DCRLF;
  $headers .= $fieldsData;
  $headers .= $fileHeaders;

  if(!$fp = fsockopen($host, $port)) return false;
  fputs($fp, $headers);

  $fp2 = fopen($filePath, "rb");

  while(!feof($fp2)) fputs($fp, fgets($fp2, 1024*100));

  fclose($fp2);

  fputs($fp, $fileHeadersTail);

  $serverResponse = "";
  while(!feof($fp)) $serverResponse .= fgets($fp, 4096);
  fclose($fp);

  return $serverResponse;
}
?>

One thought on “Скрипт, отправляющий файлы методом POST

  1. Сейчас всё больше и больше предприятий интересуются тем, какой должна быть автоматизированная линия для изготовления полимер песчаных изделий. На производствах иногда устанавливают оборудование, с помощью которого можно устранять технические неполадки. С помощью такого оборудования можно создавать интересные технологии, которые могут быть задействованы в строительном секторе или в агропромышленной индустрии.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *