青青世界 2020-02-24 12:54 采纳率: 33.3%
浏览 457
已结题

把php表达上传文件转化成libcrul 的curl_formadd实现,代码通过,发币!谢谢朋友们帮帮忙吧,总是对应不上! 有更好的例子也可以!

<?php

$header_prefix = 'file';

$slots = 6;

?>

<html>

<head>

<title>Test upload</title>

</head>

<body>

<?php

if ($_POST){

    echo "<h2>Uploaded files:</h2>";

    echo "<table border=\"2\" cellpadding=\"2\">";

    echo "<tr><td>Name</td><td>Location</td><td>Content type</td><td>MD5</td><td>Size</td><td>Scp Command</td><td>Wget Command</tr>";

    for ($i=1;$i<=$slots;$i++){

        $key = $header_prefix.$i;

        if (array_key_exists($key."_name", $_POST) && array_key_exists($key."_path",$_POST)) {

            $tmp_name = $_POST[$key."_path"];

            $name = $_POST[$key."_name"];

            $content_type = $_POST[$key."_content_type"];

            $md5 = $_POST[$key."_md5"];

            $size = $_POST[$key."_size"];

            $final_path = "/export/share/upload";

            if (copy($tmp_name, "$final_path/$name")) {

                    echo "SUCCESS!";

            } else {

                    echo "FAIL!";

            }

            $scp_cmd = "scp team@***:/export/share/upload/$name .";

            $wget_cmd = "wget http://***/files/upload/$name";

            echo "<tr><td>$name</td><td>$final_path</td><td>$content_type</td><td>$md5</td><td>$size</td><td>$scp_cmd</td><td>$wget_cmd</td>";

        }

    }

    echo "</table>";

}else{?>

<h2>Select files to upload</h2>

<form name="upload" method="POST" enctype="multipart/form-data" action="/upload">

<input type="file" name="file1"><br>

<input type="file" name="file2"><br>

<input type="file" name="file3"><br>

<input type="file" name="file4"><br>

<input type="file" name="file5"><br>

<input type="file" name="file6"><br>

<input type="submit" name="submit" value="Upload">

<input type="hidden" name="test" value="value">

</form>

<?php

}

?>

</body>

</html>

把以上的PHP动态提交表单的行为,用libcurl 中 curl_formadd 实现,感谢路过的大神伸出智慧之手!需要使用C++完成上面的实现

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2020-02-24 13:28
    关注
       // form.php
    
       /**
        * curl Post文件,php5以下版本可用
        * 
        * @param $action (处理上传文件的url,form表单的action)
        * @param $path (文件路径)
        **/
        function upload_file($action, $path){
            $data = array(
                // 需要注意的是,在路径前必须带上@,不然只会当做是简单的键值对
                'pic'   =>  '@'.realpath($path)
                'name'  =>  'issac'
            );
    
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $action);
            curl_setopt($ch, CURLOPT_POST, true );
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  //该curl_setopt可以向header写键值对
            curl_setopt($ch, CURLOPT_HEADER, false); // 不返回头信息
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            $output = curl_exec($ch);
            curl_close($ch);
            return $output;       
        }
    
    
        // 调用
        upload_file('accrpt.php', '/files/img.png');
    
    
    评论

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R