本文目錄一覽:
- 1、php 如何不用點擊上傳按鈕只通過文件路勁就可以上傳?
- 2、php如何將BLOB類型的數據存儲到伺服器上
- 3、php如何實現文件上傳
- 4、ajax發送給php 圖片鏈接是blob php端怎麼獲取這個圖片
- 5、怎樣用php實現上傳圖片到資料庫
php 如何不用點擊上傳按鈕只通過文件路勁就可以上傳?
很麻煩,實際上瀏覽器沒有直接操作系統文件的許可權,這是一段從stackoverflow摘錄的代碼可以將文件轉為Blob對象的代碼,之後可以用ajax將對象發到服務上。
script
var getFileBlob = function (url, cb) {
var xhr = new XMLHttpRequest();
xhr.open(“GET”, url);
xhr.responseType = “blob”;
xhr.addEventListener(‘load’, function() {
cb(xhr.response);
});
xhr.send();
};
var blobToFile = function (blob, name) {
blob.lastModifiedDate = new Date();
blob.name = name;
return blob;
};
var getFileObject = function(filePathOrUrl, cb) {
getFileBlob(filePathOrUrl, function (blob) {
cb(blobToFile(blob, ‘test.jpg’));
});
};
getFileObject(‘1.txt’, function (fileObject) {
console.log(fileObject);
});
/script
php如何將BLOB類型的數據存儲到伺服器上
blob是一個對象容器,只能由js自身讀取並作為二進位數據流上傳至伺服器。
這種你得修改js代碼建立一個blob上傳至後台,然後後台再用腳本接收並儲存為文件。
php如何實現文件上傳
所謂上傳就是把文件從你電腦本地複製到你的項目指定文件夾下。
但這有個中間過程,就是複製到系統指定的臨時文件夾生成臨時文件。
然後將臨時文件複製到你指定的文件夾下。
剩下的就是各種驗證了。
給你個圖片上傳方法
//上傳一張圖片
$pic = $_FILES[‘pic’];
function upload($pic){
$tmp_name = $pic[‘tmp_name’];
$name = $pic[‘name’];
$type = $pic[‘type’];
$size = $pic[‘size’];
if(!is_uploaded_file($tmp_name)) exit(‘不是上傳文件’);
//判斷是否是圖片
$mine = array(‘image/png’,’image/jpg’,’image/gif’,’image/jpeg’);
if(!in_array($type,$mine)) exit(‘圖片格式不正確’);
//判斷是否有錯誤碼
$error = $pic[‘error’];
switch ($error) {
case 1:
exit(“超出上傳文件的最大限制”);
case 2:
exit(“超出了指定的文件大小”);
case 3:
exit(“只有部分文件被上傳”);
case 4:
exit(“文件沒有被上傳”);
case 6:
exit(“找不到臨時文件夾”);
case 7:
exit(“文件寫入失敗”);
}
echo “================br/”;
echo “上傳文件名稱是:”.$name.”br/”;
echo “上傳文件類型是:”.$type.”br/”;
echo “上傳文件大小是:”.$size.”br/”;
echo “上傳後系統返回的值是:”.$error.”br/”;
echo “上傳文件的臨時存放路徑是:”.$tmp_name.”br/”;
echo”開始移動臨時文件”.’br’;
$des_name = ‘up/’.mt_rand().time().’.’.basename($type);
$res = move_uploaded_file($tmp_name, $des_name);
if($res){
echo “================br/”;
echo “上傳圖片成功”.’br’;
}
}
ajax發送給php 圖片鏈接是blob php端怎麼獲取這個圖片
你在PHP裡邊列印一下 $_FILES 就明白了。
在表單加這個 enctype=”multipart/form-data” 不要編碼
form action=”upload.php” method=”post” enctype=”multipart/form-data”
!–file定義輸入欄位和 “瀏覽”按鈕,供文件上傳。–
input type=”file” name=”file” onchange=”PreviewImage(this,’imgHeadPhoto’,’divPreview’);” size=”20″ /
input type=”submit” value=”上傳”/
/form
怎樣用php實現上傳圖片到資料庫
php實現上傳圖片保存到資料庫的方法。具體分析如下:
php 上傳圖片,一般都使用move_uploaded_file方法保存在伺服器上。但如果一個網站有多台伺服器,就需要把圖片發布到所有的伺服器上才能正常使用(使用圖片伺服器的除外)
如果把圖片數據保存到資料庫中,多台伺服器間可以實現文件共享,節省空間。
首先圖片文件是二進位數據,所以需要把二進位數據保存在mysql資料庫。
mysql資料庫提供了BLOB類型用於存儲大量數據,BLOB是一個二進位對象,能容納不同大小的數據。
BLOB類型有以下四種,除存儲的最大信息量不同外,其他都是一樣的。可根據需要使用不同的類型。
TinyBlob 最大 255B
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G
數據表photo,用於保存圖片數據,結構如下:
CREATE TABLE `photo` (
`id` int(10) unsigned NOT NULL auto_increment,
`type` varchar(100) NOT NULL,
`binarydata` mediumblob NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
upload_image_todb.php代碼如下:
?php
// 連接資料庫
$conn=@mysql_connect(“localhost”,”root”,””) or die(mysql_error());
@mysql_select_db(‘demo’,$conn) or die(mysql_error()); // 判斷action
$action = isset($_REQUEST[‘action’])? $_REQUEST[‘action’] : ”;
// 上傳圖片
if($action==’add’){
$image = mysql_escape_string(file_get_contents($_FILES[‘photo’][‘tmp_name’]));
$type = $_FILES[‘photo’][‘type’];
$sqlstr = “insert into photo(type,binarydata) values(‘”.$type.”‘,'”.$image.”‘)”;
@mysql_query($sqlstr) or die(mysql_error());
header(‘location:upload_image_todb.php’);
exit();
// 顯示圖片
}elseif($action==’show’){
$id = isset($_GET[‘id’])? intval($_GET[‘id’]) : 0;
$sqlstr = “select * from photo where id=$id”;
$query = mysql_query($sqlstr) or die(mysql_error());
$thread = mysql_fetch_assoc($query);
if($thread){
header(‘content-type:’.$thread[‘type’]);
echo $thread[‘binarydata’];
exit();
}
}else{
// 顯示圖片列表及上傳表單
?
!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “”
html
head
meta http-equiv=”content-type” content=”text/html; charset=utf-8″
title upload image to db demo /title
/head
body
form name=”form1″ method=”post” action=”upload_image_todb.php” enctype=”multipart/form-data”
p圖片:input type=”file” name=”photo”/p
pinput type=”hidden” name=”action” value=”add”input type=”submit” name=”b1″ value=”提交”/p
/form
?php
$sqlstr = “select * from photo order by id desc”;
$query = mysql_query($sqlstr) or die(mysql_error());
$result = array();
while($thread=mysql_fetch_assoc($query)){
$result[] = $thread;
}
foreach($result as $val){
echo ‘pimg
src=”upload_image_todb.php?action=showid=’.$val[‘id’].’t=’.time().'”
width=”150″/p’;
}
?
/body
/html
?php
}
?
程序運行截圖和資料庫截圖:
原創文章,作者:Q31VD,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/128597.html