导航:首页 > 编程语言 > php上传图片流

php上传图片流

发布时间:2024-12-20 16:07:15

Ⅰ 求教php如何接收文件流,,ios android上传的图片

请问你的客户端是将数据流编码了之后传递的么?
客户端可以直接使用流上传,不需要进行编码,然后php获取后直接保存就可以了,如:
$byte = file_get_contents('php://input');
file_put_contents($filename,$byte);

这样客户端不用进行处理,直接向服务器端写入数据流就可以了。

Ⅱ php 实现上传图片至服务器的函数

<form method=post action="upload.php" ENCTYPE="multipart/form-data">

<input type="file" name="upload_file">
<input type="submit" name="submit" value="上传文件">

用PHP上传时,需要对内容作详细的检查,例如是否容许读写文件,文件格式、文件大小是否在你指定的大小内等。

<?

$file_size_max = 1000000;

// 限制文件上传最大容量(bytes)

$store_dir = "/public/www/upload/";

// 上传文件的储存位置

$accept_overwrite = true;

//允许读写文件

// 检查文件大小

if ($upload_file_size > $file_size_max) {

echo "对不起,你的文件容量大于规定";

exit;

}

// 检查读写文件

if (file_exists($store_dir . $upload_file_name) &&&& !$accept_overwrite) {

echo "文件已存在,不能再复制";

exit;

}

//复制文件到指定目录

if (! @ ($upload_file,$store_dir . $upload_file_name)) {

echo "复制文件失败";

exit;

}

echo "上传文件完成";
?>

Ⅲ PHP怎么上传图片路径,怎么获取图片路径

$filePath 应该是上传的临时文件吧,然后将$filePath,这个文件移动到 $uploadPath,$uploadPath,应该就 你已经上传的图片的路径!包含图片文件的名称。

Ⅳ php+mysql图片的插入、显示操作代码

如果存图片流,数据库会非常庞大,建议还是存路径,图片放到统一的目录下,方便管理
存就是insert 字段用vchar的存相对路径就可以了
读就是查数据库 然后放到数组里 、
显示<img src='读出来的变量'>就可以了

function uploadPhoto ($file) {

$this->result = false;
$this->error = false;
// -- save parameters
$this->_file = $file;
//get path
$this->createUploadDir();
$this->_destination=SystemProperties::$UPLOAD_ROOT_PATH['photo'];
//if (!is_null($allowed)) { $this->_allowed = $allowed; } else { $this->_allowed = array('jpg','jpeg','gif','png'); }

// -- check that FILE array is even set
if (isset($file) && is_array($file) && !$this->upload_error($file['error'])) {

// -- cool, now set some variables
$fileID=$this->_IDGenerator->getNextId('IMAGE');
$fileExt=$this->ext($file['name']);
$fileName =$fileID.'.'.$fileExt;
$this->createFileDir('image',$fileName);
$fileTmp = $file['tmp_name'];
//$fileSize = $file['size'];
//$fileType = $file['type'];
$fileError = $file['error'];

// -- update name
$this->_name = $this->_destination.$fileName;
// -- it's been uploaded with php
if (is_uploaded_file($fileTmp)) {
// -- where to put the file?
$filePath=$this->_fileUtil->getFilePath($fileName);
$output = $this->_destination.$filePath['filePath'];
//resize the img first
$isFileName_f=$this->resizeImage($this->_file,'f',$filePath['noExtFileName'].'_f'.$filePath['ext']);
//or resize the img like this,choosed type in ('a','b','c')
//$isFileName_b=$this->resizeImage($this->_file,'b',$filePath['noExtFileName'].'_b'.$filePath['ext']);
if($isFileName_a==true && $isFileName_b==true && $isFileName_c==true && $isFileName_d==true){
// -- just upload it
if (move_uploaded_file($fileTmp, $output)) {
chmod($output, 0644);
$this->result = basename($this->_name);
return $this->result;
} else {
$this->error("Could not move '$fileName' to '$this->_destination'");
}
}
} else {
$this->error("Possible file upload attack on '$fileName'");
}
} else {
$this->error("Possible file upload attack");
}
}

用php框架的,和纯php写不一样,但是问题不大就是一个思路,没有完全通用的代码,前台加个上传框,做个form传到后台就不用写了吧,传过来的参数$file就是文件,也是个数组用$_FILE[]能看到,首先校验后缀名或者前台js校验,move_uploaded_file这句是最重要的一句,其他都是辅助准备参数而已,意思就是把传上来的东西放到哪去,路径加文件名 $output 这个参数就是你要保存到数据库的值了

Ⅳ php怎么实现批量上传图片不是一张一张选择之后一起上传 就是打开文件夹全选直接全部上传。

获取路径下的所有图片文件名,写入数据库或是某个变量,在别的页面调用程序上传,再从别的页面读出来就行了。

以下是示例代码:

<?php
function upload($fileName,$filePath)
{
//判断该文件是否是用户根据POST方式提交到服务器的上传文件

foreach($_FILES[$fileName]['tmp_name'] as $k=>$v)
{
if($_FILES[$fileName]['name'][$k]!="")
{

$result=check($_FILES[$fileName]['size'][$k],$_FILES[$fileName]['type'][$k],$_FILES[$fileName]['name'][$k]);
if($result['error']==1)
{
echo $result['msg']."<br>";
echo "出错文件:".$result['name']."<br>";
}

else
{

$arrTT=explode(".",$_FILES[$fileName]['name'][$k]);
$extName=$arrTT[count($arrTT)-1];
$NewName=sha1(microtime()).".".$extName;
if(move_uploaded_file($v,$filePath.$NewName));
$arrWW[]=$NewName;
}
}
}
return $arrWW;

}
function check($size,$types,$name)
{
if($size>=5242880)
{
$result['msg']='文件过大!';
$result['error']=1;
$result['name']=$name;
}
$arrType=array('image/pjpeg','image/gif','image/x-png','audio/mp3','application/msword','application/vnd.ms_excel','application/octet-stream','application/vnd.ms-powerpoint');
if(!in_array($types,$arrType))
{
$result['msg']='文件类型不匹配!';
$result['error']=1;
$result['name']=$name;
}
return $result;

}

?>

Ⅵ php 图片上传有个小BUG,求大神解答。以下是我的一些代码

您好,这个是 PHP 的一个 BUG(毕竟是外国人做的,中文支持不太好)。

PHP 中,上传中文文件基本上都会出错,所以只要在移动文件时,将文件重命名就可以了。

(如果需要原文件名,只需要将原文件名和重命名后的文件名保存在数据库中就可以了)

代码如下(您的代码有一些漏洞与不规范之处,这里已更正):

//检测文件MIME类型,如果不是图片则阻止本次上传
//不要相信$_FILES['file']['type'],这是可以伪造的

//如果PHP>=5.3.0,则使用finfo函数来获取文件类型
//因为PHP>=5.3.0放弃了mime_content_type()函数
if(version_compare(PHP_VERSION,'5.3.0','>=')){
$f=finfo(FILEINFO_MIME_TYPE);
$ftype=explode('/',finfo_file($f,$_FILES['file']['tmp_name']));
finfo_close($f);
$f=NULL;
if($ftype[0]!=='image'){
@unlink($_FILES['file']['tmp_file']);
die('文件上传失败!<br/>请重新上传。<br/><ahref="pfabu.html">返回</a>');
}
$ftype=NULL;
}
else{
$ftype=explode('/',mime_content_type($_FILES['file']));
if($ftype[0]!=='image'){
@unlink($_FILES['file']['tmp_file']);
die('文件上传失败!<br/>请重新上传。<br/><ahref="pfabu.html">返回</a>');
}
$ftype=NULL;
}

$link=mysql_connect('localhost','root','123456');
mysql_query('setnames'UTF8'');
mysql_select_db('zhenyu',$link);

//为了防止SQL注入,对数据进行转义
$pkind=addslashes($_POST['pkind']);
$pname=addslashes($_POST['pname']);
$pshow=addslashes($_POST['pshow']);

$filename_upload=$_FILES['file']['name'];

//Base64编码后的字符只含有a-zA-Z0-9以及+,/,=
$filename=base64_encode($filename_upload);
//Base64编码中有一些非文件名可用的字符,把它们替换掉
$filename=strtr($filename,array(
'+'=>'.',
'/'=>'_',
'='=>'-'
)
);
//上传后的文件保存在proct文件夹
$file_move='proct/'.$filename;

//如果文件已存在,则在文件名后加上-和一个随机数
//当然,这一部分也可以您自己更改,不会影响结果
if(file_exists($file_move)){
$rand='-'.strval(rand(0,9999));
$file_move.=$rand;
$filename_upload.=$rand;
//因为$rand被其它变量引用,不能直接注销
//所以将其赋值为NULL,也可达到同样的释放内存的效果
$rand=NULL;
}

//判断文件是否是通过HTTPPOST上传的
//这可以用来确保恶意用户无法欺骗程序去访问本不该访问的文件,例如/etc/passwd
if(!is_uploaded($_FILES['file']['tmp_name'])){
@unlink($_FILES['file']['tmp_name']);
die('文件上传失败!<br/>请重新上传。<br/><ahref="pfabu.html">返回</a>');
}
//如果文件移动失败,则显示错误信息
//这样就不会导致数据库存储正常,但文件上传失败的情况了
elseif(!move_uploaded_file($_FILES['file']['tmp_name'],$file_move)){
@unlink($_FILES['file']['tmp_name']);
die('文件上传失败!<br/>请重新上传。<br/><ahref="pfabu.html">返回</a>');
}

//这里将重命名后的文件名与原文件名储存在同一个字段中,用竖线(|)隔开
//读取时只需要用explode()分开就可以了
if($mysql=mysql_query("INSERTINTOproct(pkind,pname,ppicture,pshow)VALUES('{$pkind}','{$pname}','{$file_move}|{$_FILES['file']['name']}','{$pshow}')")){
//显示文件上传信息
echo'Upload:',$filename_upload,'<br/>';
echo'Size:',strval($_FILES['file']['size']/1024.0),'KB<br/>';
echo'Storedin:',$file_move,'<br/>';
echo'<ahref="pfabu.html">返回</a>';
echo'<script>alert("success");</script>';
}
//如果存入数据库时失败
//则显示错误信息
else{
@unlink($_FILES['file']['tmp_name']);
die('文件上传失败!<br/>请重新上传。<br/><ahref="pfabu.html">返回</a>');
}

这样就可以了。

由于没有测试,代码难免会出现一些错误,请随意指出,谢谢!


另外,您还应该考虑到不同用户上传同一个文件名的文件的情况,最好是为每个用户单独分配一个文件夹。

而且,当一个文件夹下的文件过多(>300)时,会导致读写速度变慢,这一点要注意。

解决:

当一个用户的文件夹下文件有300个时,用户再上传文件,就将新的文件保存在另一个文件夹中(如:用户名加上这个用户已有的文件夹数量)。


如果还有后续问题,可以联系我的邮箱:

[email protected]

谢谢!

Ⅶ php thinkphp 怎么获取上传图片的路径

$info = $upload->upload ();

$data ['表单名称'] = $info ['表单名称'] ['savepath'] . $info ['表单名称'] ['savename'];

Ⅷ php如何将图片转成字节流

在php中,有文件上传,那么php服务器端可以接收到请求参数 $_FILES,在 $_FILES数组中读取到上传文件的form表单名,然后在读取的数组中可以获取上传文件的源文件,使用 fopen()函数就可以获取文件的字节流了。
具体来点代码看看吧:(假定上传文件的表单名为 “formname”)
if($_FILES && isset($_FILES["formname"])){
//获取上传的文件的属性数组
$_fileinfo = $_FILES["formname"];
//获取上传文件的原文件名
$_filename = $_fileinfo["name"];
//获取上传文件的大小
$_filesize = $_fileinfo["size"];
//获取上传文件的临时文件名(长文件名)
$_filesource = $_fileinfo["tmp_name"];
//以读写方式打开文件,并将资源绑定到一个流上
$_filestream = fopen($_filesource,"ab");
//实现上传文件,其实质是把临时文件移动到制定的保存文件的位置
$_newfilename = "../mypath/filename.exp"; //自定义文件名,包含路径,可以是相对路径
move_uploaded_file($_filesource, $_newfilename);
}

阅读全文

与php上传图片流相关的资料

热点内容
网页源码广告特征 浏览:94
linux文件查看工具 浏览:573
androidgps经纬度转换 浏览:331
java正则pattern 浏览:899
cad布局相关命令 浏览:342
什么是服务器域 浏览:252
启客tvapp怎么连接电视 浏览:785
大宽带服务器叫什么名字 浏览:438
为什么会内部服务器崩溃 浏览:50
华为手机怎么安装大疆app无人机 浏览:194
程序员转型最好的岗位 浏览:835
广西电信dns服务器ip地址 浏览:524
程序员看过来的视频 浏览:503
淘宝客优惠券网站源码 浏览:395
linuxmysql命令退出 浏览:940
非科班程序员面试难吗 浏览:713
金少金股公式指标源码 浏览:683
php面向对象实例教程 浏览:75
快递解压放哪里 浏览:72
云服务器海康平台 浏览:748