當前位置:首頁 » 文件管理 » thinkphp5文件上傳

thinkphp5文件上傳

發布時間: 2022-10-31 18:29:23

❶ thinkphp 上傳文件的時候不支持flv 格式的怎麼解決啊

①$upload->allowExts = array('jpg', 'gif', 'png', 'jpeg');// 設置附件上傳類型
這樣寫試試。
②不知道你的Thinkphp是哪個版本的。你去看下上傳文件的類裡面具體怎麼寫的,是UploadFile.class.php文件。看下protected function error($errorNo) 這個方法,也就是提示錯誤的函數,看寫「非法數據對象」是哪裡出錯了。有可能不是因為類型的原因。
(不行再問我,QQ617762749)

❷ tp5中調用文件上傳方法報Call to a member function move() on string的處理方法。

你的對象實例化失敗了。 你調用了一個類內方法 Create(),但是由於對象實例化失敗,無法調用,所以報致命錯誤

❸ thinkphp3.2 多文件上傳時 上傳錯誤提示

$upload=newThinkUpload();//實例化上傳類
$upload->maxSize=3145728;//設置附件上傳大小
$upload->exts=array('jpg','gif','png','jpeg');//設置附件上傳類型
$upload->rootPath='./Uploads/';//設置附件上傳根目錄
$upload->savePath='';//設置附件上傳(子)目錄
//上傳文件
$info=$upload->upload();
if(!$info){//上傳錯誤提示錯誤信息
$this->error($upload->getError());
}else{//上傳成功
$this->success('上傳成功!');
}

❹ thinkphp5 上傳多個文件需要實例化么

<tr>
<td><inputtype='file'name='video[]'/></td>
<td><inputtype='file'name='video[]'/></td>
<td><inputtype='file'name='video[]'/></td>
</tr>
<tr>
<td><inputtype='file'name='pic[]'/></td>
<td><inputtype='file'name='pic[]'/></td>
<td><inputtype='file'name='pic[]'/></td>
</tr>
這種不同name的多文件上傳,怎麼改UploadFile.class.php類,來實現多name多文件上傳
index.html
<formmethod="POST"enctype="multipart/form-data"action="{:U('Index/upload')}">
<tr>
<td>flv文件</td>
<td><inputtype="file"name="flv"/></td>
</tr>
<tr>
<td>視頻壓縮文件</td>
<td><inputtype="file"name="movie"/></td>
</tr>
<tr>
<td>縮略圖</td>
<td><inputtype="file"name="img"/></td>
</tr>
<inputtype="submit"value="上傳"/>
</form>
復制代碼
UploadFile.class.php162行
if(!is_dir($savePath)){
//檢查目錄是否編碼後的
if(is_dir(base64_decode($savePath))){
$savePath=base64_decode($savePath);
}else{
//嘗試創建目錄
if(!mkdir($savePath)){
$this->error='上傳目錄'.$savePath.'不存在';
returnfalse;
}
}
}else{
if(!is_writeable($savePath)){
$this->error='上傳目錄'.$savePath.'不可寫';
returnfalse;
}
}
復制代碼
改成
if(!is_array($savePath)){
if(!is_dir($savePath)){
//檢查目錄是否編碼後的
if(is_dir(base64_decode($savePath))){
$savePath=base64_decode($savePath);
}else{
//嘗試創建目錄
if(!mkdir($savePath)){
$this->error='上傳目錄'.$savePath.'不存在';
returnfalse;
}
}
}else{
if(!is_writeable($savePath)){
$this->error='上傳目錄'.$savePath.'不可寫';
returnfalse;
}
}
}
復制代碼
UploadFile.class.php194行
$file['savepath']=$savePath;
復制代碼
改成
$file['savepath']=is_array($savePath)?$savePath[$key]:$savePath;
復制代碼
Publicfunctionupload(){
import('Org.Net.UploadFile');
$upload=newOrgNetUploadFile();//實例化上傳類
$upload->maxSize=3145728;//設置附件上傳大小
$upload->allowExts=array('jpg','gif','png','jpeg');//設置附件上傳類型
//$upload->savePath='./Public/Uploads/';//設置附件上傳目錄
$upload->savePath=array('flv'=>'./Public/Uploads/flv/','movie'=>'./Public/Uploads/movie/','img'=>'./Public/Uploads/img/');
if(!$upload->upload()){
$this->error($upload->getErrorMsg());
}else{//上傳成功獲取上傳文件信息
$info=$upload->getUploadFileInfo();
}

}
復制代碼
$upload->savePath改為數組
./Public/Uploads/flv/
./Public/Uploads/movie/
./Public/Uploads/img/
這3個目錄要手動創建這樣在就變成不影響原來程序的
情況下實現上傳多個文件到不同的目錄了

❺ 請問你有Thinkphp下使用Bootstrap File Input多文件上傳的案例嗎

現在我們開始使用插件
(1)首先引入文件
<!--css文件-->
<link href="__PUBLIC__/css/fileinput.css" media="all" rel="stylesheet" type="text/css" />

<link href="__PUBLIC__/css/bootstrap.min.css?v=3.3.6" rel="stylesheet">

<!--js文件-->
<script src="__PUBLIC__/js/jQuery.min.js" type="text/javaScript"></script>
<script src="__PUBLIC__/js/bootstrap.min.js?v=3.3.6"></script>
<script src="__PUBLIC__/js/plugins/fileinput.js" type="text/javascript"></script>
<script src="__PUBLIC__/js/fileinput.min.js" type="text/javascript"></script>

(2)初始化控制項
<input id="file" name="file_data[]" type="file" multiple data-preview-file-type="any" data-show-caption="true">
data-preview-file-type="any" :設置之後可以上傳多個文件
name="file_data[]" :因為要上傳多個文件所以要用數組
(3)js初始化控制項
$("#file").fileinput({
uploadUrl: "{:U('Admin/Img/imgupload2')}",// 上傳路徑
uploadAsync: false,//是否非同步傳輸
maxFileCount: 5//最大文件上傳數量
}).on('filebatchpreupload', function(event, data, id, index) {

}).on('filebatchuploadsuccess', function(event, data) {//上傳成功從伺服器端返回的數據(即保存的文件名稱)
for(var i=0;i<data.response.length;i++){
alert(data.response[i].flag);
}
});
(4)thinkphp對應的方法
public function imgupload2(){
$upload = new \Think\Upload();// 實例化上傳類
$upload->maxSize = 3145728 ;// 設置附件上傳大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 設置附件上傳類型
$upload->rootPath = './Public/Uploads/';// 設置附件上傳根目錄
$upload->savePath = ''; // 設置附件上傳(子)目錄
$info = $upload->upload(array($_FILES['file_data'])); // 上傳文件
$i=0;
if(!$info) {// 上傳錯誤提示錯誤信息
$a[$i]['flag']="no";
$this->ajaxReturn($a,'JSON');
}else{// 上傳成功 獲取上傳文件信息
foreach($info as $file){
$a[$i]['flag']=$file['savepath'].$file['savename'];
$i++;
}
}
$this->ajaxReturn($a,'JSON');
}

❻ thinkphp5.0.5怎麼自定義命名上傳文件

ThinkPHP5.0內置了一個文件處理類 hinkFile,內置的文件上傳操作也是調用了該類進行處理的。

File類繼承了PHP的SplFileObject類,因此可以調用SplFileObject類所有的屬性和方法。

表單代碼:

<formaction="/index/index/upload"enctype="multipart/form-data"method="post">
<inputtype="file"name="image"/><br>
<inputtype="submit"value="上傳"/>
</form>

控制器代碼:

publicfunctionupload(){
//獲取表單上傳文件例如上傳了001.jpg
$file=request()->file('image');
//移動到框架應用根目錄/public/uploads/目錄下
$info=$file->move(ROOT_PATH.'public'.DS.'uploads');
if($info){
//成功上傳後獲取上傳信息
//輸出jpg
echo$info->getExtension();
//輸出20160820/.jpg
echo$info->getSaveName();
//輸出.jpg
echo$info->getFilename();
}else{
//上傳失敗獲取錯誤信息
echo$file->getError();
}
}

move方法成功的話返回的是一個SplFileInfo對象,你可以對上傳後的文件進行後續操作,比如改名。

❼ thinkphp5 怎麼接受zyupload,上傳的圖片

引入這個類就可以

<?php
//視圖表單
//支持多張圖片上傳
classupload{
var$dir;//附件存放物理目錄
var$time;//自定義文件上傳時間
var$allow_types;//允許上傳附件類型
var$field;//上傳控制項名稱
var$maxsize;//最大允許文件大小,單位為KB
var$thumb_width;//縮略圖寬度
var$thumb_height;//縮略圖高度
var$watermark_file;//水印圖片地址
var$watermark_pos;//水印位置
var$watermark_trans;//水印透明度
//構造函數
//$types:允許上傳的文件類型,$maxsize:允許大小,$field:上傳控制項名稱,$time:自定義上傳時間
functionupload($types='jpg|png',$maxsize=1024,$field='attach',$time=''){
$this->allow_types=explode('|',$types);
$this->maxsize=$maxsize*1024;
$this->field=$field;
$this->time=$time?$time:time();
}
//設置並創建文件具體存放的目錄
//$basedir:基目錄,必須為物理路徑
//$filedir:自定義子目錄,可用參數{y}、{m}、{d}
functionset_dir($basedir,$filedir=''){
$dir=$basedir;
!is_dir($dir)&&@mkdir($dir,0777);
if(!empty($filedir)){
$filedir=str_replace(array('{y}','{m}','{d}'),array(date('Y',$this->time),date('m',$this->time),date('d',$this->time)),strtolower($filedir));//用string_replace把{y}{m}{d}幾個標簽進行替換
$dirs=explode('/',$filedir);
foreach($dirsas$d){
!empty($d)&&$dir.=$d.'/';
!is_dir($dir)&&@mkdir($dir,0777);
}
}
$this->dir=$dir;
}
//圖片縮略圖設置,如果不生成縮略圖則不用設置
//$width:縮略圖寬度,$height:縮略圖高度
functionset_thumb($width=0,$height=0){
$this->thumb_width=$width;
$this->thumb_height=$height;
}
//圖片水印設置,如果不生成添加水印則不用設置
//$file:水印圖片,$pos:水印位置,$trans:水印透明度
functionset_watermark($file,$pos=6,$trans=80){
$this->watermark_file=$file;
$this->watermark_pos=$pos;
$this->watermark_trans=$trans;
}
/*—————————————————————-
執行文件上傳,處理完返回一個包含上傳成功或失敗的文件信息數組,
其中:name為文件名,上傳成功時是上傳到伺服器上的文件名,上傳失敗則是本地的文件名
dir為伺服器上存放該附件的物理路徑,上傳失敗不存在該值
size為附件大小,上傳失敗不存在該值
flag為狀態標識,1表示成功,-1表示文件類型不允許,-2表示文件大小超出
—————————————————————–*/
functionexecute(){
$files=array();//成功上傳的文件信息
$field=$this->field;
$keys=array_keys($_FILES[$field]['name']);
foreach($keysas$key){
if(!$_FILES[$field]['name'][$key])continue;
$fileext=$this->fileext($_FILES[$field]['name'][$key]);//獲取文件擴展名
$filename=date('Ymdhis',$this->time).mt_rand(10,99).'.'.$fileext;//生成文件名
$filedir=$this->dir;//附件實際存放目錄
$filesize=$_FILES[$field]['size'][$key];//文件大小
//文件類型不允許
if(!in_array($fileext,$this->allow_types)){
$files[$key]['name']=$_FILES[$field]['name'][$key];
$files[$key]['flag']=-1;
continue;
}
//文件大小超出
if($filesize>$this->maxsize){
$files[$key]['name']=$_FILES[$field]['name'][$key];
$files[$key]['name']=$filesize;
$files[$key]['flag']=-2;
continue;
}
$files[$key]['name']=$filename;
$files[$key]['dir']=$filedir;
$files[$key]['size']=$filesize;
//保存上傳文件並刪除臨時文件
if(is_uploaded_file($_FILES[$field]['tmp_name'][$key])){
move_uploaded_file($_FILES[$field]['tmp_name'][$key],$filedir.$filename);
@unlink($_FILES[$field]['tmp_name'][$key]);
$files[$key]['flag']=1;
//對圖片進行加水印和生成縮略圖,這里演示只支持jpg和png(gif生成的話會沒了幀的)
if(in_array($fileext,array('jpg','png'))){
if($this->thumb_width){
if($this->create_thumb($filedir.$filename,$filedir.'thumb_'.$filename)){
$files[$key]['thumb']='thumb_'.$filename;//縮略圖文件名
}
}
$this->create_watermark($filedir.$filename);
}
}
}
return$files;
}
//創建縮略圖,以相同的擴展名生成縮略圖
//$src_file:來源圖像路徑,$thumb_file:縮略圖路徑
functioncreate_thumb($src_file,$thumb_file){
$t_width=$this->thumb_width;
$t_height=$this->thumb_height;
if(!file_exists($src_file))returnfalse;
$src_info=getImageSize($src_file);
//如果來源圖像小於或等於縮略圖則拷貝源圖像作為縮略圖,免去操作
if($src_info[0]<=$t_width&&$src_info[1]<=$t_height){
if(!($src_file,$thumb_file)){
returnfalse;
}
returntrue;
}
//按比例計算縮略圖大小
if(($src_info[0]-$t_width)>($src_info[1]-$t_height)){
$t_height=($t_width/$src_info[0])*$src_info[1];
}else{
$t_width=($t_height/$src_info[1])*$src_info[0];
}
//取得文件擴展名
$fileext=$this->fileext($src_file);
switch($fileext){
case'jpg':
$src_img=ImageCreateFromJPEG($src_file);break;
case'png':
$src_img=ImageCreateFromPNG($src_file);break;
case'gif':
$src_img=ImageCreateFromGIF($src_file);break;
}
//創建一個真彩色的縮略圖像
$thumb_img=@ImageCreateTrueColor($t_width,$t_height);
//ImageCopyResampled函數拷貝的圖像平滑度較好,優先考慮
if(function_exists('imageresampled')){
@ImageCopyResampled($thumb_img,$src_img,0,0,0,0,$t_width,$t_height,$src_info[0],$src_info[1]);
}else{
@ImageCopyResized($thumb_img,$src_img,0,0,0,0,$t_width,$t_height,$src_info[0],$src_info[1]);
}
//生成縮略圖
switch($fileext){
case'jpg':
ImageJPEG($thumb_img,$thumb_file);break;
case'gif':
ImageGIF($thumb_img,$thumb_file);break;
case'png':
ImagePNG($thumb_img,$thumb_file);break;
}
//銷毀臨時圖像
@ImageDestroy($src_img);
@ImageDestroy($thumb_img);
returntrue;
}
//為圖片添加水印
//$file:要添加水印的文件
functioncreate_watermark($file){
//文件不存在則返回
if(!file_exists($this->watermark_file)||!file_exists($file))return;
if(!function_exists('getImageSize'))return;
//檢查GD支持的文件類型
$gd_allow_types=array();
if(function_exists('ImageCreateFromGIF'))$gd_allow_types['image/gif']='ImageCreateFromGIF';
if(function_exists('ImageCreateFromPNG'))$gd_allow_types['image/png']='ImageCreateFromPNG';
if(function_exists('ImageCreateFromJPEG'))$gd_allow_types['image/jpeg']='ImageCreateFromJPEG';
//獲取文件信息
$fileinfo=getImageSize($file);
$wminfo=getImageSize($this->watermark_file);
if($fileinfo[0]<$wminfo[0]||$fileinfo[1]<$wminfo[1])return;
if(array_key_exists($fileinfo['mime'],$gd_allow_types)){
if(array_key_exists($wminfo['mime'],$gd_allow_types)){
//從文件創建圖像
$temp=$gd_allow_types[$fileinfo['mime']]($file);
$temp_wm=$gd_allow_types[$wminfo['mime']]($this->watermark_file);
//水印位置
switch($this->watermark_pos){
case1://頂部居左
$dst_x=0;$dst_y=0;break;
case2://頂部居中
$dst_x=($fileinfo[0]-$wminfo[0])/2;$dst_y=0;break;
case3://頂部居右
$dst_x=$fileinfo[0];$dst_y=0;break;
case4://底部居左
$dst_x=0;$dst_y=$fileinfo[1];break;
case5://底部居中
$dst_x=($fileinfo[0]-$wminfo[0])/2;$dst_y=$fileinfo[1];break;
case6://底部居右
$dst_x=$fileinfo[0]-$wminfo[0];$dst_y=$fileinfo[1]-$wminfo[1];break;
default://隨機
$dst_x=mt_rand(0,$fileinfo[0]-$wminfo[0]);$dst_y=mt_rand(0,$fileinfo[1]-$wminfo[1]);
}
if(function_exists('ImageAlphaBlending'))ImageAlphaBlending($temp_wm,True);//設定圖像的混色模式
if(function_exists('ImageSaveAlpha'))ImageSaveAlpha($temp_wm,True);//保存完整的alpha通道信息
//為圖像添加水印
if(function_exists('imageCopyMerge')){
ImageCopyMerge($temp,$temp_wm,$dst_x,$dst_y,0,0,$wminfo[0],$wminfo[1],$this->watermark_trans);
}else{
ImageCopyMerge($temp,$temp_wm,$dst_x,$dst_y,0,0,$wminfo[0],$wminfo[1]);
}
//保存圖片
switch($fileinfo['mime']){
case'image/jpeg':
@imageJPEG($temp,$file);
break;
case'image/png':
@imagePNG($temp,$file);
break;
case'image/gif':
@imageGIF($temp,$file);
break;
}
//銷毀零時圖像
@imageDestroy($temp);
@imageDestroy($temp_wm);
}
}
}
//獲取文件擴展名
functionfileext($filename){
returnstrtolower(substr(strrchr($filename,'.'),1,10));
}
}
?>

❽ thinkphp xheditor 圖片上傳問題

配置一個圖片上傳的路徑 就好了
上傳的處理頁面配
<scripttype=「text/javascript」src=「__PUBLIC__/xheditor/xheditor-1.1.7-zh-cn.min.js」></script>
<scripttype=「text/javascript」>
$(pageInit);
functionpageInit() {
$(『#elm2′).xheditor({
tools:『Img,Fullscreen』,// 調用圖片
skin:『nostyle』,// 皮膚
upBtnText:『瀏覽』,// 上傳按鈕文字
upMultiple:』5′,// 允許一次上傳多少個文件
upImgUrl:「__APP__/Ajax/upload?immediate=1″,// 圖片文件上傳接收URL 發生到Ajax控制器的upload方法
upImgExt:「jpg,jpeg,gif,png」,// 限制圖片上傳擴展名
shortcuts:{
『ctrl+enter』:submitForm
}
});
}
functionsubmitForm(){
$(『#frmDemo』).submit();
}
</script>
<textareaid=「elm2″name=「elm2″rows=「20″cols=「60″></textarea>
上面的的__APP__/Ajax/upload 發送到 ajax控制器的upload方法
class AjaxAction extends Action{public function upload(){// 上傳操作}}

❾ thinkphp 多圖上傳,如何把圖片路徑保存到資料庫

關於上傳文件:

推薦使用插件Uploadify!

使用方法:http://www.uploadify.com/documentation/

下載地址:http://www.uploadify.com/download/


關於多圖上傳:

  1. 在客戶端定義一個js變數,用於緩存每次非同步上傳圖片路徑;

  2. 最後提交表達數據的時候就把這些路徑集合保存到資料庫即可!

熱點內容
分解質因數c語言 發布:2024-10-05 12:15:53 瀏覽:776
mysql存儲過程字元編碼 發布:2024-10-05 12:05:48 瀏覽:180
c語言命名 發布:2024-10-05 11:56:38 瀏覽:616
編程哪個好學習 發布:2024-10-05 11:50:59 瀏覽:999
為什麼不買安卓旗艦 發布:2024-10-05 11:46:04 瀏覽:380
ostcb編譯條件 發布:2024-10-05 11:28:24 瀏覽:993
win10怎麼關閉登錄密碼 發布:2024-10-05 11:09:55 瀏覽:935
降溫解壓器 發布:2024-10-05 10:54:15 瀏覽:421
軋鋼壓縮空氣 發布:2024-10-05 10:54:10 瀏覽:185
京東微信密碼是多少 發布:2024-10-05 10:28:48 瀏覽:488