很多站长朋友们都不太清楚php上传图片解码,今天小编就来给大家整理php上传图片解码,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php中上传图片文件时提示不存在的图像文件 2、 CKFinder(php版)上传图片报错,总是显示500的错误,请问该怎么解决这个问题呢? 3、 关于thinkphp图片上传问题 4、 PHP怎样上传图片以及预览图片? 5、 php 图片流 转为base64 6、 php表单上传图片到七牛云存储并返回地址……求具体流程~有代码更好 php中上传图片文件时提示不存在的图像文件Gd.class.php第42行报错,应该是在这里使用的图片地址用错了,使用$_Files里的tmp_name才是真实路径,注意$_Files可能是个多维数组,另外如果确定路径没错,去这个路径看看图片是否正确上传上来,如果图片真的不存在,就是上传有问题
php上传原理,是把文件先保存在一个临时目录,比如C:/tmp(这个路径可以在php的配置文件里配),然后需要你手动把临时文件转移到你的目标文件,比如D:/uploads,如果不做这一步,页面关闭后,临时文件会被删除。
CKFinder(php版)上传图片报错,总是显示500的错误,请问该怎么解决这个问题呢?这个可以看看错误日志,看具体的错误信息。我猜测是保存上传文件的文件夹没有写权限,或者不存在。
关于thinkphp图片上传问题<form method="post" action="upload.php" enctype="multipart/form-data">
<input type='file' name='file'>
<input type='submit' value='提交'>
</form>
//引入UploadFile类
import('ORG.Net.UploadFile');
//实例化UploadFile类
$upload = new UploadFile();
//设置文件大小
$upload -> maxSize = 3292200;
//设置文件保存规则唯一
$upload->saveRule = 'uniqid';
//设置上传文件的格式
$upload -> allowExts = array('jpg','png','jpeg');
//保存路径
$upload->savePath ='./Public/Uploads/';
//设置需要生成缩略图,仅对图像文件有效
$upload->thumb = true;
//设置需要生成缩略图的文件前缀
$upload->thumbPrefix = 'm_'; //生产缩略图也可以根据需要生成1张或多张,2张:'m_,s_'
//设置缩略图最大宽度
$upload->thumbMaxWidth = '150';//2张的不同设置:'150,200'
//设置缩略图最大高度
$upload->thumbMaxHeight = '200';
//删除原图
$upload->thumbRemoveOrigin = true;
//上传失败返回错误信息
if(!$upload->upload()){
$this->error($upload->getErrorMsg());
}else{
$this->success('上传成功');
//获取上传文件的信息
$inf= $upload->getUploadFileInfo();
}
PHP怎样上传图片以及预览图片?本地图片,就搞个img,设置他的src就可以实现;
参考如下:
<div class="column " style="width: 400px; margin-left: 200px;" id="imageShow">
<div id="productImageNew">@*用于图片预览*@
</div>
<div id="productImage">
<div class="widget the-common-margin-top" style="height: 400px; border: 1px solid #eeeeee;
padding: 3px;">
<img id="imgHolder" style="max-height: 390px; max-width: 390px;" />
</div>
</div>
</div>
<form id="formImageUpload" name="formImageUpload" method="post" action="/DocTeam/ProductsImage/UploadImage"
enctype="multipart/form-data">
<div id="fileDiv">
<input type="file" id="theFile" name="theFile" size="20" style="cursor: pointer;
width: 65px; height: 60px; position: absolute; filter: alpha(opacity:1); -moz-opacity: 0;
opacity: 0; z-index: 102;" />
</div>
<input type="hidden" name="imageId_hide" id="imageId_hide" />
</form>
<div id="cover" style="position: absolute; background-color: White; z-index: 10;
filter: alpha(opacity=100); -moz-opacity: 1; opacity: 1; overflow: auto; width: 400px;">
<input id="selectImage" type="button" style="width: 65px; height: 60px;" value="Select" />
<br />
<br />
<input type="button" value="Upload" id="imageUpload" style="width: 65px; height: 60px;"
disabled="disabled" onclick="javascript:uploadImage();" />
</div>
//js本地图片预览,兼容ie[6-9]、火狐、Chrome17+、Opera11+、Maxthon3
function PreviewImage(fileObj, imgPreviewId, divPreviewId) {
var allowExtention = ".jpg,.bmp,.gif,.png"; //允许上传文件的后缀名document.getElementById("hfAllowPicSuffix").value;
var extention = fileObj.value.substring(fileObj.value.lastIndexOf(".") + 1).toLowerCase();
var browserVersion = window.navigator.userAgent.toUpperCase();
if (allowExtention.indexOf(extention) > -1) {
if (fileObj.files) {//HTML5实现预览,兼容chrome、火狐7+等
if (window.FileReader) {
var reader = new FileReader();
reader.onload = function (e) {
document.getElementById(imgPreviewId).setAttribute("src", e.target.result);
}
reader.readAsDataURL(fileObj.files[0]);
} else if (browserVersion.indexOf("SAFARI") > -1) {
alert("不支持Safari6.0以下浏览器的图片预览!");
}
} else if (browserVersion.indexOf("MSIE") > -1) {
if (browserVersion.indexOf("MSIE 6") > -1) {//ie6
document.getElementById(imgPreviewId).setAttribute("src", fileObj.value);
} else {//ie[7-9]
fileObj.select();
if (browserVersion.indexOf("MSIE 9") > -1)
fileObj.blur(); //不加上document.selection.createRange().text在ie9会拒绝访问
var newPreview = document.getElementById(divPreviewId + "New");
if (newPreview == null) {
newPreview = document.createElement("div");
newPreview.setAttribute("id", divPreviewId + "New");
}
var a = document.selection.createRange().text;
// newPreview.style.width = document.getElementById(imgPreviewId).width + "px";
// newPreview.style.height = document.getElementById(imgPreviewId).height + "px";
//newPreview.style.width = 390 + "px";
newPreview.style.height = 390 + "px";
newPreview.style.border = "solid 1px #eeeeee";
newPreview.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src='" + document.selection.createRange().text + "')";
var tempDivPreview = document.getElementById(divPreviewId);
// tempDivPreview.parentNode.insertBefore(newPreview, tempDivPreview);
newPreview.style.display = "block";
tempDivPreview.style.display = "none";
}
} else if (browserVersion.indexOf("FIREFOX") > -1) {//firefox
var firefoxVersion = parseFloat(browserVersion.toLowerCase().match(/firefox\/([\d.]+)/)[1]);
if (firefoxVersion < 7) {//firefox7以下版本
document.getElementById(imgPreviewId).setAttribute("src", fileObj.files[0].getAsDataURL());
} else {//firefox7.0+
document.getElementById(imgPreviewId).setAttribute("src", window.URL.createObjectURL(fileObj.files[0]));
}
} else {
document.getElementById(imgPreviewId).setAttribute("src", fileObj.value);
}
} else {
alert("仅支持" + allowExtention + "为后缀名的文件!");
fileObj.value = ""; //清空选中文件
if (browserVersion.indexOf("MSIE") > -1) {
fileObj.select();
document.selection.clear();
}
fileObj.outerHTML = fileObj.outerHTML;
}
}
function setTheFileButton_Cover_SelectImageButton() {
// debugger;
// var position = $("#selectImage", "#cover").position();
// var css = { top: position.top, left: position.left };
// $("#theFile", "#fileDiv").css(css);
}
var $imgHolder = $('#imgHolder', "#productImage");
var tempDiv = $("#temp_div");
$("#select", "#cover").click(function () {
$("#theFile", "#fileDiv").click().select();
});
$("#theFile", "#fileDiv").click(function () {
$(this).blur();
});
$("#theFile", "#fileDiv").change(function () {
PreviewImage(this, 'imgHolder', 'productImage');
setTheFileButton_Cover_SelectImageButton();
// alert("预览已生成!");
$("#imageUpload").prop("disabled", false);
});
php 图片流 转为base64使用PHP对图片进行base64解码输出
<?php
$img = 'test.jpg';
$base64_img = base64EncodeImage($img);
echo '<img src="' . $base64_img . '" />';
function base64EncodeImage ($image_file) {
$base64_image = '';
$image_info = getimagesize($image_file);
$image_data = fread(fopen($image_file, 'r'), filesize($image_file));
$base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));
return $base64_image;
}
?>
php表单上传图片到七牛云存储并返回地址……求具体流程~有代码更好有的,我最近研究了一下,写了一篇记录,如下
原文地址:
网上关于七牛云存储的教程除了官网上的API文档,其他的资料太少了。研究了下API之后,现在已经能实现图片的上传和下载及上传之后的重定向。
首先本篇文章实现的功能如下:
1.利用表单上传功能,用户可以点击选择文件按钮,选择本地的一个文件,同时设定上传的图片的名称,点击上传按钮可以上传并存储到七牛云存储。
2.在点击上传时会检测文件的后缀名,限制为jpg和png格式存储。
3.上传成功后跳转到自己设定的一个URL,并传回文件信息,如文件名。而不是显示七牛白花花的json显示页面。
好啦,那我们开始吧,首先我们要有一个七牛云存储账号,如果没有的就自己去申请吧。
七牛云存储传送门:
一.SDK下载
戳这个网址下载一下SDK吧,里面封装了文件上传下载等等的方法,我们引入之后可以直接调用。
SDK之中有一个qiniu的文件夹,这是所有的SDK实货,这个是最重要的。我们首先要把这个文件夹及里面的文件放到项目文件夹中,比如我放到这里。
大家可以看到有一个qiniu文件夹。好啦,资源支持就是这样。接下来我们要实现代码咯。
二.文件的上传。
1.首先把你七牛云存储的密钥照出来,点击账号设置可以看到有一个AccessKey和SecretKey,留着备用。
2.上传凭证生成。
在这里我们首先要引入rs.php文件,自己找一对应路径,代码如下:
require_once(dirname(__FILE__)."/qiniu/rs.php");
dirname()是指的绝对路径,有时相对路径会出现问题,建议在前面加上dirname方法获取绝对路径。
require_once是引入文件,表示该文件只引入一次。
然后,传入你的AccessKey和SecretKey
代码如下:
$accessKey?=?'Imn35KC5pRX7Ov3scxbYkvNk6oIx7zWsBRp16';??//换成你自己的密钥
$secretKey?=?'s29vc9tlCvs23wRh7QScYTuzCDmEroKj1ddssz';????//换成你自己的密钥
Qiniu_SetKeys($accessKey, $secretKey);
然后建一个上传策略对象,将你的bucket?传入,bucket 就是你的空间名。
$bucket = 'designpartners';
$putPolicy = new Qiniu_RS_PutPolicy($bucket);
然后调用此方法来生成上传凭证。
$upToken = $putPolicy->Token(null);
接下来就写一个html表单
<form?method="post"?action=""?name?=?"form"?enctype="multipart/form-data">
????<ul>
????????????<input?type="hidden"??id="token"?name="token"??value=<?php?echo?$upToken?>>
????????<li>
????????????<label?for="key">key:</label>
????????????<input?name="key"?value="">
????????</li>
????????<li>
????????????<label?for="bucket">照片:</label>
????????????<input?name="file"??type="file"?/>
????????</li>
????????<li>
????????????<input?type="submit"?value="提交"?>
????????</li>
????</ul>
</form>
action?就填写?up.qiniu测试数据,表单提供了一个输入框key,用来输入你想保存的图片名称,上传到七牛之后就是这个名字。
然后一个文件选择,一个提交按钮。运行结果如下:
输入key值和选择照片即可实现照片的上传。哈哈哈有没有很简单。
三、文件下载
原理和文件上传功能相仿。
引入文件
require_once(dirname(__FILE__)."/qiniu/rs.php");
声明你的七牛云存储域名和两个密钥以及向下载的文件名称
$key?=?'00000';
$domain?=?'designpartners.qiniudn测试数据';
$accessKey?=?'IOImn35KC5p3scxbYkvNk6oIxB7zWsBRp16';
$secretKey?=?'s29vc9tlCvs23wCDmIbUSi4EroKj1z';
注意:1.key值即为文件名,不要加后缀
2.domain即为bucket加上qiniudn测试数据,例子中的designpartners就是我在上传图片时用的bucket名。
3.accessKey和secretKey换成你自己的,直接用我的不行的..因为我修改了.
Qiniu_SetKeys($accessKey,?$secretKey);??
$baseUrl?=?Qiniu_RS_MakeBaseUrl($domain,?$key);
$getPolicy?=?new?Qiniu_RS_GetPolicy();
$privateUrl?=?$getPolicy->MakeRequest($baseUrl,?null);
echo?$privateUrl?.?"\n";
传入这四个值即可生成一样url,直接访问url即可实现图片的下载。
在引入图片时直接
<img src = "<?php echo $privateUrl; ?>"/>
即可引入图片咯,很简单的吧。
四、303重定向
在上面的方法中,我们上传图片成功后跳转到up.qiniu测试数据下,会显示白白的网页,显示一个json字符串,但是在实际网站开发中我们肯定 不能让用户看到这种网页,所以我们用到了303跳转。SDK中也为我们封装了这个方法。使用其实非常简单。在上传文件的代码中添加两行代码即可
$putPolicy?=?new?Qiniu_RS_PutPolicy($bucket);
$putPolicy->ReturnUrl?=?site_url()."/upload/receiveInfo";
$putPolicy->ReturnBody='{"key":?$(key)}';
注意:1.?ReturnUrl和ReturnBody必须指定,并且首字母要大写,很多人都小写开头,这样会跳转不成功。
2.ReturnUrl必须是一个公网可以访问的网址,在本地测试是不可能通过的。比如你写成localhost,七牛服务器是定位不到的。
3.这个ReturnUrl的链接后会跟着一个?upload_ret=XXX,可以用get方法获取这个upload_ret。upload_ret的内容是base64安全编码的json形式的key值。
值的解析:比如我上传的文件名是555
upload/receiveInfo?upload_ret=eyJrZXkiOiAiNTU1In0=
网址后缀如上所示,把那个upload_ret复制下来,用base64解码可以出现如下结果:
{"key": "555"}
所以,我们要获取555这个值的代码如下,即解析代码如下:
$upload_ret?=?$_GET['upload_ret'];
$json_ret?=?base64_decode($upload_ret);
$result=json_decode($json_ret);
echo?"key".$result->key;
好啦,获取到这个key值之后,你可以选择存到数据库或者进行其他的操作咯。
五、上传前文件类型的验证
我们可以用js来验证文件的后缀名,
在form的属性里加上
onsubmit="return isValidateFile('file');"
加上一个js方法
<script>
function?isValidateFile(obj)?{
var?extend?=?document.form.file.value.substring(document.form.file.value.lastIndexOf(".")?+?1);
if?(extend?==?"")?{
alert("请选择头像");
return?false;
}
else?{
if?(!(extend?==?"jpg"?||?extend?==?"png"))?{
alert("请上传后缀名为jpg或png的文件!");
return?false;
}
}
return?true;
}
</script>
即可验证它的类型是否合法。
附:CI代码实现:
获取Uptoken:
function?getUptoken(){
require_once(dirname(__FILE__)."/qiniu/rs.php");
//远程存储空间名称
$bucket?=?'designpartners';
$accessKey?=?'IOImn35KCRX7Ov3scvNk6oIxB7zWsBRp16';
$secretKey?=?'s29vc9tlCvs23wRhTuzCDmIbUSi4EroKj1z';
Qiniu_SetKeys($accessKey,?$secretKey);
$putPolicy?=?new?Qiniu_RS_PutPolicy($bucket);
echo?site_url();
$putPolicy->ReturnUrl?=?site_url()."/upload/receiveInfo";
$putPolicy->ReturnBody='{"key":?$(key)}';
$upToken?=?$putPolicy->Token(null);
return?$upToken;
}
文件上传:
public?function?uploadPic(){
$upToken?=?$this->getUptoken();
????????$data['upToken']?=?$upToken;
$this->load->view('upload',$data);
}
303重定向解析:
public?function?receiveInfo(){
$upload_ret?=?$_GET['upload_ret'];
$json_ret?=?base64_decode($upload_ret);
$result=json_decode($json_ret);
echo?"key".$result->key;?
}
文件下载:
public?function?downloadPic(){
require_once(dirname(__FILE__)."/qiniu/rs.php");
$key?=?'00000';
$domain?=?'designpartners.qiniudn测试数据';
$accessKey?=?'IOImn35KC57Ov3scxbYkvNk6oIxB7zWsBRp16';
$secretKey?=?'s29vc9tlCvsh7QScYTuzCDmIbUSi4EroKj1z';
Qiniu_SetKeys($accessKey,?$secretKey);??
$baseUrl?=?Qiniu_RS_MakeBaseUrl($domain,?$key);
$getPolicy?=?new?Qiniu_RS_GetPolicy();
$privateUrl?=?$getPolicy->MakeRequest($baseUrl,?null);
echo?"====>?getPolicy?result:?\n";
echo?$privateUrl?.?"\n";
}
表单:
<script>
function?isValidateFile(obj)?{
var?extend?=?document.form.file.value.substring(document.form.file.value.lastIndexOf(".")?+?1);
if?(extend?==?"")?{
alert("请选择头像");
return?false;
}
else?{
if?(!(extend?==?"jpg"?||?extend?==?"png"))?{
alert("请上传后缀名为jpg或png的文件!");
return?false;
}
}
return?true;
}
</script>
<form?method="post"?action=""?name?=?"form"?enctype="multipart/form-data"?onsubmit="return?isValidateFile('file');">
????<ul>
????????????<input?type="hidden"??id="token"?name="token"??value=<?php?echo?$upToken?>>
????????<li>
????????????<label?for="key">key:</label>
????????????<input?name="key"?value="">
????????</li>
????????<li>
????????????<label?for="bucket">照片:</label>
????????????<input?name="file"??type="file"?/>
????????</li>
????????<li>
????????????<input?type="submit"?value="提交"?>
????????</li>
????</ul>
</form>
关于php上传图片解码的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php上传图片解码 php图片上传代码详解的详细内容...