php上传二进制数据流

转载原文: https://blog.csdn.net/yfgcq/article/details/52217685

<form action="提交到处理地址" method="post" enctype="multipart/form-data" class="form-horizontal">
                                <div class="form-group">
                                    <label class="col-lg-2 col-sm-2 control-label">上传图片</label>
                                    <div class="col-lg-4">
                                    <input type="file" name="photo">
                                    </div>
                                </div>
                                <div class="form-group">
                                    <div class="col-lg-offset-2 col-lg-4">
                                        <button type="submit" name="submit" class="btn btn-default">确定</button>
                                    </div>
                                </div>
                            </form>
// 用来处理上传的数据流代码
public function imgApp(){
        //方式一:电脑上传文件
        $image = $_FILES["photo"]["tmp_name"];
        $fp = fopen($image, "r");
        $file = fread($fp, $_FILES["photo"]["size"]); //二进制数据流
        //保存地址
        $imgDir = './Uploads/';
        //要生成的图片名字
        $filename = date("Ym")."/".md5(time().mt_rand(10, 99)).".png"; //新图片名称
        $newFilePath = $imgDir.$filename;
        $data = $file;
        $newFile = fopen($newFilePath,"w"); //打开文件准备写入
        fwrite($newFile,$data); //写入二进制流到文件
        fclose($newFile); //关闭文件
        //写入数据库
        $arr = array(
                "uid" => 1, //用户id
                "cid" => 1, //分类id
                "a_title" => $_POST["a_title"], //标题
                "a_content" => $_POST["a_content"], //内容
                "photo" => $filename, //图片路径
                "a_urgent" => $_POST['status'] == 'on' ? 0 : 1, //是否急需
                "add_time" => time(), //创建时间
            );
        if(empty($arr["a_title"])){
            $this->error("标题不为空");
        } else if(empty($arr["a_content"])) {
            $this->error("内容不为空");
        }
        if($db = M("answer")->add($arr)){
            $this->success("保存成功", "demo2");
        } else {
            $this->error("失败");
        }
    }

<?php
/** php 发送流文件
* @param  String  $url  接收的路径
* @param  String  $file 要发送的文件
* @return boolean
*/
function sendStreamFile($url, $file){

    if(file_exists($file)){

        $opts = array(
            'http' => array(
                'method' => 'POST',
                'header' => 'content-type:application/x-www-form-urlencoded',
                'content' => file_get_contents($file)
            )
        );

        $context = stream_context_create($opts);
        $response = file_get_contents($url, false, $context);
        $ret = json_decode($response, true);
        return $ret['success'];

    }else{
        return false;
    }

}

$ret = sendStreamFile('http://localhost/fdipzone/receiveStreamFile.php', 'send.txt');
var_dump($ret);
?>

<?php
/** php 接收流文件
* @param  String  $file 接收后保存的文件名
* @return boolean
*/
function receiveStreamFile($receiveFile){

    $streamData = isset($GLOBALS['HTTP_RAW_POST_DATA'])? $GLOBALS['HTTP_RAW_POST_DATA'] : '';

    if(empty($streamData)){
        $streamData = file_get_contents('php://input');
    }

    if($streamData!=''){
        $ret = file_put_contents($receiveFile, $streamData, true);
    }else{
        $ret = false;
    }

    return $ret;

}

$receiveFile = 'receive.txt';
$ret = receiveStreamFile($receiveFile);
echo json_encode(array('success'=>(bool)$ret));
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值