php soket模拟提交文件上传域(多个)

function soket_file($url)
{
    $info = parse_url($url);
    $fp = fsockopen($info["host"], 80, $errno, $errstr, 3); //第5参数为timeout
    $clf = "\r\n";
    $postHeader = "";
    $postHeader .= "POST ".$url." HTTP/1.1" . $clf;
    $postHeader .= "Host: ".$info['host']."" . $clf;
    $postHeader .= "Connection: close" . $clf;
    $postHeader .= "Content-type: multipart/form-data, boundary=--17d079a010" . $clf;

    $postData = "";
    //第一个文件
    $postData .= "----17d079a010" . $clf;
    $postData .= "Content-Disposition: form-data; name=\"111[]\"" . $clf . $clf;
    $postData .= date('Y/m/d/') . "111" . $clf;

    $postData .= "----17d079a010" . $clf;
    $postData .= "Content-Disposition: form-data; name=\"111[]\"; filename=111" . $clf;

    $postData .= "Content-Type: text/html" . $clf . $clf;
    $postData .= "Content-Transfer-Encoding: binary\r\n\r\n";
    $postData .= "test post sdfdsfsdf" . $clf;


    //第二个文件
    $postData .= "----17d079a010" . $clf;
    $postData .= "Content-Disposition: form-data; name=\"111[]\"" . $clf . $clf;
    $postData .= date('Y/m/d/') . "{$file}" . $clf;

    $postData .= "----17d079a010" . $clf;
    $postData .= "Content-Disposition: form-data; name=\"111[]\"; filename=222" . $clf;

    $postData .= "Content-Type: text/html" . $clf . $clf;
    $postData .= "Content-Transfer-Encoding: binary\r\n\r\n";
    $postData .= "test post" . $clf;

    $postData .= "----17d079a010" . $clf;
    $postHeader .= "Content-length: " . strlen($postData) . $clf . $clf;
    
    fputs($fp, $postHeader.$postData);
    while (!feof($fp)) {
        $line = fread($fp, 4096);
        echo $line;
    }
}

PHP fsockopen需要 PHP.ini 中 allow_url_fopen 选项开启。


你可能感兴趣的:(php soket模拟提交文件上传域(多个))