php上傳多張圖片
1. php將post過來的$_FILES多張圖片同時保存在同一個文件夾
if(!isset($_FILES['userfile'])){
echo "失敗";
}else{
//文件夾不存在則創建文件夾(文件夾路徑:$dirname)
if (!file_exists($dirname){
mkdir($dirname);
}
$max_files=5; //設置最多上傳文件的個數
//遍歷圖片並存放至文件夾(圖片文件集合$src)
for($i=0;$i<$max_files;$i++){
//如果沒出錯
if($_FILES['userfile']['error'][$i]==0){
//設置完整存放路徑+文件名
$file_path=$dirname. "/" .$_FILES['userfile']['name'][$i];
//圖片正常讀寫就存放至文件夾
if (@fopen($src,'r')){
file_put_contents($file_path, $_FILES['userfile']);
}
}
}
}
2. php 如何實現圖片上傳前預覽,並且有多個圖片上傳和預覽
<form name="form4" id="form4" method="post" action="#"> <input type="file" name="file4" id="file4" ōnchange="preview4()" /> <img id="pic4" src="" alt="圖片在此顯示" width="120"/> </form> <scrīpt type="text/javascrīpt"> function preview4(){ var x = document.getElementById("file4"); var y = document.getElementById("pic4"); if(!x || !x.value || !y) return; var patn = /\.jpg$|\.jpeg$|\.gif$/i; if(patn.test(x.value)){ y.src = "file://localhost/" + x.value; } else{ alert("您選擇的似乎不是圖像文件。"); } } </scrīpt>
3. input file用了multiple屬性,而且選擇了多張圖片,PHP該怎麼上傳
其實就那兩個函數x0dx0ais_uploaded_file()和move_uploaded_file()x0dx0a是循環上傳的。你列印下$_FILES這個超全局數組就明白了。下面我的測試代碼上傳圖片的:x0dx0ax0dx0ax0dx0a
x0dx0a x0dx0a";x0dx0aif(move_uploaded_file($_FILES['images']['tmp_name'][$k],$save)){x0dx0aecho "上傳成功!";x0dx0a}x0dx0a}x0dx0a}x0dx0aecho "
";x0dx0aprint_r($_FILES);x0dx0aecho "";x0dx0a}x0dx0ax0dx0a?>
4. 怎樣用php實現上傳圖片到資料庫
php實現上傳圖片保存到資料庫的方法。具體分析如下:
php 上傳圖片,一般都使用move_uploaded_file方法保存在伺服器上。但如果一個網站有多台伺服器,就需要把圖片發布到所有的伺服器上才能正常使用(使用圖片伺服器的除外)
如果把圖片數據保存到資料庫中,多台伺服器間可以實現文件共享,節省空間。
首先圖片文件是二進制數據,所以需要把二進制數據保存在mysql資料庫。
mysql資料庫提供了BLOB類型用於存儲大量數據,BLOB是一個二進制對象,能容納不同大小的數據。
BLOB類型有以下四種,除存儲的最大信息量不同外,其他都是一樣的。可根據需要使用不同的類型。
TinyBlob 最大 255B
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G
數據表photo,用於保存圖片數據,結構如下:
CREATETABLE`photo`(
`id`int(10)unsignedNOTNULLauto_increment,
`type`varchar(100)NOTNULL,
`binarydata`mediumblobNOTNULL,
PRIMARYKEY(`id`)
)ENGINE=MyISAMDEFAULTCHARSET=latin1AUTO_INCREMENT=1;
upload_image_todb.php代碼如下:
<?php
//連接資料庫
$conn=@mysql_connect("localhost","root","")ordie(mysql_error());
@mysql_select_db('demo',$conn)ordie(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="insertintophoto(type,binarydata)values('".$type."','".$image."')";
@mysql_query($sqlstr)ordie(mysql_error());
header('location:upload_image_todb.php');
exit();
//顯示圖片
}elseif($action=='show'){
$id=isset($_GET['id'])?intval($_GET['id']):0;
$sqlstr="select*fromphotowhereid=$id";
$query=mysql_query($sqlstr)ordie(mysql_error());
$thread=mysql_fetch_assoc($query);
if($thread){
header('content-type:'.$thread['type']);
echo$thread['binarydata'];
exit();
}
}else{
//顯示圖片列表及上傳表單
?>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="content-type"content="text/html;charset=utf-8">
<title>uploadimagetodbdemo</title>
</head>
<body>
<formname="form1"method="post"action="upload_image_todb.php"enctype="multipart/form-data">
<p>圖片:<inputtype="file"name="photo"></p>
<p><inputtype="hidden"name="action"value="add"><inputtype="submit"name="b1"value="提交"></p>
</form>
<?php
$sqlstr="select*fromphotoorderbyiddesc";
$query=mysql_query($sqlstr)ordie(mysql_error());
$result=array();
while($thread=mysql_fetch_assoc($query)){
$result[]=$thread;
}
foreach($resultas$val){
echo'<p><img
src="upload_image_todb.php?action=show&id='.$val['id'].'&t='.time().'"
width="150"></p>';
}
?>
</body>
</html>
<?php
}
?>
程序運行截圖和資料庫截圖:
5. PHP後台新聞圖片的添加
一般來說,新聞後台管理系統的新聞內容都是用的【富文本編輯器】
在編輯內容的過程中,用ajax方式將圖片非同步傳到伺服器上並返回地址,再在文本框中使用html的img把標簽把圖片顯示出來
整個富文本的內容,先將html實體轉換成字元串加以儲存,整個文章內容在資料庫中以字元串形式儲存,讀出來的時候將字元串轉義為html實體,先可以顯示出自定義的文本樣式了
由於內容是字元串,所以上傳一張圖片和上傳多張圖片對於一篇文章來說是無差別的
擴展
富文本編輯器會根據你的操作,用html標簽來保存你的排版信息,你看起來是在編輯一段文字,實際上富文本編輯器已經暗地裡把格式轉換成了html代碼
6. thinkPHP3.2.3文件上傳類多張圖片上傳怎麼只有第一張圖片被上傳
可以遍歷傳過來的FILES數組,然後用循環調用UPLOAD類
public function upload(){
$upload = new \Think\Upload();// 實例化上傳類
$upload->maxSize = 2000000 ;// 設置附件上傳大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 設置附件上傳類
$upload->rootPath = ''./Uploads/';
$upload->savePath = date('Y').'/'.date('m').'/'.date('d').'/';
$upload->subName = array('date', 'H');
$upload->saveName = md5(uniqid());
$info = $upload->upload();
if(!$info) { // 上傳錯誤提示
$this->error($upload->getError());
}else{ // 上傳成功
return $info;
//$this->success('上傳成功!');
}
}
//調用
foreach($_FILES["banner_index"]["size"] as $key=>$val){
if($val>0){
$info=$this->upload(); //判斷上傳文件大小大於0,調用upload
foreach($info as $v){
echo $v["savepath"].$v["savename"]; }
}
}
7. thinkphp 多圖上傳,如何把圖片路徑保存到資料庫
關於上傳文件:
推薦使用插件Uploadify!
使用方法:http://www.uploadify.com/documentation/
下載地址:http://www.uploadify.com/download/
關於多圖上傳:
在客戶端定義一個js變數,用於緩存每次非同步上傳圖片路徑;
最後提交表達數據的時候就把這些路徑集合保存到資料庫即可!