php上传图片没有文件名后缀
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php上传图片没有文件名后缀相关的知识,希望对你有一定的参考价值。
if(move_uploaded_file($_FILES['img']['tmp_name'],DOCUMENTROOT."/uploads/img/".time().$FILES['img']['name']))
用这句上传文件时,上传到服务器的文件没有后缀名,正常情况下$FILES['img']['name']这个包含的文件名应该有后缀名才对
$file_ext = strtolower(substr($filename, strrpos($filename, \'.\') + 1));
echo $file_ext;
请楼主先试试用这几句看是否能获取到后缀名
一般来说,即使系统没有显示后缀名,在php上传中也是可以获取到后缀名的
还有,就是要检查一下,move_uploaded_file函数里,目标地址的图片名称是否拼接了后缀名追问
$_FILES["file"]["name"]这个的文件名应该是全部文件名,为什么我的代码获取的却不包含后缀名,上传的那张图片是有后缀名的
参考技术A $_FILES["file"]["type"] 这个才是文件类型$_FILES["file"]["name"] 这个是文件名追问
$_FILES["file"]["name"]这个的文件名应该是全部文件名,包括后缀吧
追答是的!
来自:求助得到的回答 参考技术A 会不会是你电脑文件夹设置里面把后缀名给屏蔽了 参考技术B 楼主解决了没有,我也遇到这种问题了 参考技术C 这个明显是你电脑设置的问题吧?PHP 怎么下载没有后缀的图片
比如优酷网的缩略图,没有后缀,php下载它怎么写
保存比较简单,使用 file_get_contents 和 file_put_contents ,比较麻烦(应该是没想到)的是如何获取图片类型,这个可以通过响应头来判断,响应头有一个属性 Content-Type ,它就是 mime ,做好 mime 和 文件扩展名的映射,就可以知道文件的扩展名了。下面这个函数可以做个参考:
* 保存图片
* @param $url 要保存的链接
* @return 保存的字节数,失败则返回 false
*/
function saveFile($url)
// mime 和 扩展名 的映射
$mimes=array(
'image/bmp'=>'bmp',
'image/gif'=>'gif',
'image/jpeg'=>'jpg',
'image/png'=>'png',
);
// 获取响应头
if(($headers=get_headers($url, 1))!==false)
// 获取响应的类型
$type=$headers['Content-Type'];
// 如果符合我们要的类型
if(isset($mimes[$type]))
$fileName=uniqid();
$ext=$mimes[$type];
$file="temp/$fileName.$ext";
// 获取数据并保存
$contents=file_get_contents($url);
return file_put_contents($file, $contents);
return false;
参考技术A 用CURL...
以上是关于php上传图片没有文件名后缀的主要内容,如果未能解决你的问题,请参考以下文章
在上传到Wordpress时,给所有图片添加 "图片-"后缀。
php表单上传图片到七牛云存储并返回地址……求具体流程~有代码更好