<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));
?>
php上传二进制数据流
最新推荐文章于 2022-11-18 11:08:48 发布