導航:首頁 > 文件教程 > thinkphp上傳apk文件

thinkphp上傳apk文件

發布時間:2023-06-17 15:05:36

1. THINKPHP上傳大文件問題

樓主,問題解決了嗎?我的解決了,我是通過查看php.log文件,看到因為我post提交的數據過大,而被php拋棄了,後來我在php.ini中修改了post提交大小的數值,改成了沒有限制,就行了

2. 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對象,你可以對上傳後的文件進行後續操作,比如改名。

3. ThinkPHP中上傳文件如何解決重復問題

重復上傳問題其實很好解決,下面提供兩個簡單的思路,請按需求選取。

1、簡單的但風險比較大【適合新增操作,不適合修改操作】。可以使用命名規則進行判斷是否已上傳。

舉個簡單的例子,如上傳的按鈕name="file",那命名的時候就以這個欄位來命名,

如:file-{$date}.png

$date=date('Y-m-d');//當天的日期
$fileimg="file-{$date}.png";//上傳的圖片命名

這個方法雖然不是特別准確的覆蓋,但是在一定程度上做到了覆蓋。

如果你這個圖片是不變的,類似logo類型的圖片,那直接命名為logo.png,這樣每次提交都會覆蓋原來的圖片,不會重復。

注意:這個覆蓋操作會把原來的圖片覆蓋了,也就是沒辦法恢復原來的圖片。

2、修改操作的時候,只有確定提交了才覆蓋。

這個操作比較復雜一點,簡單說說就是修改的時候,上傳的圖片命名規則跟方法1一樣,也就是每次修改的圖片重復覆蓋,但是不覆蓋原來的圖片,用戶確定提交後再刪除原來的圖片,將圖片路徑換為新上傳的圖片路徑。流程圖如下:

//用戶修改信息
上傳圖片----上傳圖片命名:file_tmp.png----注意:這個圖片命名跟原圖片命名不同
多次重復上傳修改---圖片重復覆蓋file_tmp.png

//用戶最終確定上傳圖片
後台處理程序,獲取圖片的路徑,unlink原來的圖片路徑(再次跟據修改的ID查詢到圖片路徑,
進行刪除),修改獲取的圖片命名rename將file_tmp.png改為file.png,將新的文件路徑提交
更新。

以上就是兩種處理圖片重復的問題,希望能夠幫助到你。

4. Think PHP自帶的上傳文件類,

上傳表單
在ThinkPHP中使用上傳功能無需進行特別處理。例如,下面是一個帶有附件上傳的表單提交:
<form action="__URL__/upload" enctype="multipart/form-data" method="post" >
<input type="text" name="name" />
<input type="file" name="photo" />
<input type="submit" value="提交" >
</form>
注意,要使用上傳功能 你的表單需要設置 enctype="multipart/form-data"
多文件上傳支持
如果需要使用多個文件上傳,只需要修改表單,把
<input type='file' name='photo'>
改為
<input type='file' name='photo1'>
<input type='file' name='photo2'>
<input type='file' name='photo3'>
或者
<input type='file' name='photo[]'>
<input type='file' name='photo[]'>
<input type='file' name='photo[]'>
兩種方式的多附件上傳系統的文件上傳類都可以自動識別。
上傳操作
ThinkPHP文件上傳操作使用Think\Upload類,假設前面的表單提交到當前控制器的upload方法,我們來看下upload方法的實現代碼:
public function upload(){
$upload = new \Think\Upload();// 實例化上傳類
$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('上傳成功!');
}
}
上傳類對圖片文件的上傳安全做了支持,如果企圖上傳非法的圖像文件,系統會提示 非法圖像文件。 為了更好的使用上傳功能,建議你的伺服器開啟finfo模塊支持
上傳參數
在上傳操作之前,我們可以對上傳的屬性進行一些設置,Upload類支持的屬性設置包括:
屬性 描述
maxSize 文件上傳的最大文件大小(以位元組為單位),0為不限大小
rootPath 文件上傳保存的根路徑
savePath 文件上傳的保存路徑(相對於根路徑)
saveName 上傳文件的保存規則,支持數組和字元串方式定義
saveExt 上傳文件的保存後綴,不設置的話使用原文件後綴
replace 存在同名文件是否是覆蓋,默認為false
exts 允許上傳的文件後綴(留空為不限制),使用數組或者逗號分隔的字元串設置,默認為空
mimes 允許上傳的文件類型(留空為不限制),使用數組或者逗號分隔的字元串設置,默認為空
autoSub 自動使用子目錄保存上傳文件 默認為true
subName 子目錄創建方式,採用數組或者字元串方式定義
hash 是否生成文件的hash編碼 默認為true
callback 檢測文件是否存在回調,如果存在返迴文件信息數組
上面的屬性可以通過兩種方式傳入:
實例化傳入
我們可以在實例化的時候直接傳入參數數組,例如:
$config = array(
'maxSize' => 3145728,
'rootPath' => './Uploads/',
'savePath' => '',
'saveName' => array('uniqid',''),
'exts' => array('jpg', 'gif', 'png', 'jpeg'),
'autoSub' => true,
'subName' => array('date','Ymd'),
);
$upload = new \Think\Upload($config);// 實例化上傳類
關於saveName和subName的使用後面我們會有詳細的描述。
動態賦值
支持在實例化後動態賦值上傳參數,例如:
$upload = new \Think\Upload();// 實例化上傳類
$upload->maxSize = 3145728;
$upload->rootPath = './Uploads/';
$upload->savePath = '';
$upload->saveName = array('uniqid','');
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');
$upload->autoSub = true;
$upload->subName = array('date','Ymd');
上面的設置和實例化傳入的效果是一致的。
上傳文件信息
設置好上傳的參數後,就可以調用Think\Upload類的upload方法進行附件上傳,如果失敗,返回false,並且用getError方法獲取錯誤提示信息;如果上傳成功,就返回成功上傳的文件信息數組。
$upload = new \Think\Upload();// 實例化上傳類
$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{// 上傳成功 獲取上傳文件信息
foreach($info as $file){
echo $file['savepath'].$file['savename'];
}
}
每個文件信息又是一個記錄了下面信息的數組,包括:
屬性 描述
key 附件上傳的表單名稱
savepath 上傳文件的保存路徑
name 上傳文件的原始名稱
savename 上傳文件的保存名稱
size 上傳文件的大小
type 上傳文件的MIME類型
ext 上傳文件的後綴類型
md5 上傳文件的md5哈希驗證字元串 僅當hash設置開啟後有效
sha1 上傳文件的sha1哈希驗證字元串 僅當hash設置開啟後有效
文件上傳成功後,就可以使用這些文件信息來進行其他的數據操作,例如保存到當前數據表或者單獨的附件數據表。
例如,下面表示把上傳信息保存到數據表的欄位:
$model = M('Photo');
// 取得成功上傳的文件信息
$info = $upload->upload();
// 保存當前數據對象
$data['photo'] = $info[0]['savename'];
$data['create_time'] = NOW_TIME;
$model->add($data);
單文件上傳
upload方法支持多文件上傳,有時候,我們只需要上傳一個文件,就可以使用Upload類提供的uploadOne方法上傳單個文件,例如:
public function upload(){
$upload = new \Think\Upload();// 實例化上傳類
$upload->maxSize = 3145728 ;// 設置附件上傳大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 設置附件上傳類型
$upload->rootPath = './Uploads/'; // 設置附件上傳根目錄
// 上傳單個文件
$info = $upload->uploadOne($_FILES['photo1']);
if(!$info) {// 上傳錯誤提示錯誤信息
$this->error($upload->getError());
}else{// 上傳成功 獲取上傳文件信息
echo $info['savepath'].$info['savename'];
}
}
uploadOne方法上傳成功後返回的文件信息和upload方法的區別是只有單個文件信息的一維數組。
上傳文件的命名規則
上傳文件的命名規則(saveName)用於確保文件不會產生沖突或者覆蓋的情況。命名規則的定義可以根據你的業務邏輯來調整,不是固定的。例如,如果你採用時間戳的方式來定義命名規范,那麼在同時上傳多個文件的時候可能產生沖突(因為同一秒內可以上傳多個文件),因此你需要根據你的業務需求來設置合適的上傳命名規則。這里順便來說下saveName參數的具體用法。
一、採用函數方式
如果傳入的字元串是一個函數名,那麼表示採用函數動態生成上傳文件名(不包括文件後綴),例如:
// 採用時間戳命名
$upload->saveName = 'time';
// 採用GUID序列命名
$upload->saveName = 'com_create_guid';
也可以採用用戶自定義函數
// 採用自定義函數命名
$upload->saveName = 'myfun';
默認的命名規則設置是採用uniqid函數生成一個唯一的字元串序列。
saveName的值支持數組和字元串兩種方式,如果是只有一個參數或者沒有參數的函數,直接使用字元串設置即可,如果需要傳入額外的參數,可以使用數組方式,例如:
// 採用date函數生成命名規則 傳入Y-m-d參數
$upload->saveName = array('date','Y-m-d');
// 如果有多個參數需要傳入的話 可以使用數組
$upload->saveName = array('myFun',array('__FILE__','val1','val2'));
如果需要使用上傳的原始文件名,可以採用__FILE__傳入,所以上面的定義規則,最終的結果是 myFun('上傳文件名','val1','val2')執行的結果。
二、直接設置上傳文件名
如果傳入的參數不是一個函數名,那麼就會直接當做是上傳文件名,例如:
$upload->saveName = time().'_'.mt_rand();
表示上傳的文件命名採用時間戳加一個隨機數的組合字元串方式。
當然,如果覺得有必要,你還可以固定設置一個上傳文件的命名規則,用於固定保存某個上傳文件。
$upload->saveName = 'ThinkPHP';
三、保持上傳文件名不變
如果你想保持上傳的文件名不變,那麼只需要設置命名規范為空即可,例如:
$upload->saveName = '';
一般來說不建議保持不變,因為會導致相同的文件名上傳後被覆蓋的情況。
子目錄保存
saveName只是用於設置文件的保存規則,不涉及到目錄,如果希望對上傳的文件分子目錄保存,可以設置autoSub和subName參數來完成,例如:
// 開啟子目錄保存 並以日期(格式為Ymd)為子目錄
$upload->autoSub = true;
$upload->subName = array('date','Ymd');
可以使用自定義函數來保存,例如:
// 開啟子目錄保存 並調用自定義函數get_user_id生成子目錄
$upload->autoSub = true;
$upload->subName = 'get_user_id';
和saveName參數一樣,subName的定義可以採用數組和字元串的方式。
注意:如果get_user_id函數未定義的話,會直接以get_user_id字元串作為子目錄的名稱保存。
子目錄保存和文件命名規則可以結合使用。
上傳驅動
上傳類可以支持不同的環境,通過相應的上傳驅動來解決,默認情況下使用本地(Local)上傳驅動,當然,你還可以設置當前默認的上傳驅動類型,例如:
'FILE_UPLOAD_TYPE' => 'Ftp',
'UPLOAD_TYPE_CONFIG' => array(
'host' => '192.168.1.200', //伺服器
'port' => 21, //埠
'timeout' => 90, //超時時間
'username' => 'ftp_user', //用戶名
'password' => 'ftp_pwd', //密碼 ),
表示當前使用Ftp作為上傳類的驅動,上傳的文件會通過FTP傳到指定的遠程伺服器。
也可以在實例化上傳類的時候指定,例如:
$config = array(
'maxSize' = 3145728,
'rootPath' = './Uploads/',
'savePath' = '',
'saveName' = array('uniqid',''),
'exts' = array('jpg', 'gif', 'png', 'jpeg'),
'autoSub' = true,
'subName' = array('date','Ymd'),
);
$ftpConfig = array(
'host' => '192.168.1.200', //伺服器
'port' => 21, //埠
'timeout' => 90, //超時時間
'username' => 'ftp_user', //用戶名
'password' => 'ftp_pwd', //密碼 );
$upload = new \Think\Upload($config,'Ftp',$ftpConfig);// 實例化上傳類

5. 如何設置thinkphp上傳大文件

1、伺服器支持的最大文件大小,就是PHP支持的最大文件大小;

2、上傳50M,客戶端也不可能在短時間上傳完畢的,伺服器對PHP腳本有執行超時限制,超過該時間伺服器會強行中止正在執行的程序,默認是30秒。當然除了直接配置伺服器外,也可以通過
ini_set (當伺服器禁用此函數時候是無效的) 或 set_time_limit(當PHP運行在安全模式下時此函數無效) 設置。

結論:你的這個需求,還得通過伺服器才能得到根本解決。

6. thinkphp上傳文件成功,但是無法寫入資料庫,用print_r($info)也什麼都沒有...文件的參數都怎麼獲取

//上傳單個文件的表單模式
<formaction="__CONTROLLER__/upload"enctype="multipart/form-data"method="post">
<inputtype="text"name="name"/>
<inputtype="file"name="photo"/>
<inputtype="submit"value="提交"/>
</form>
//多文件上傳設置,或者改為photo1,photo2,photo3即可
<inputtype="file"name="photo[]"/>
<inputtype="file"name="photo[]"/>
<inputtype="file"name="photo[]"/>

在控制器里創建一個 upload 方法,實現上傳功能:

//上傳功能
publicfunctionupload(){
$upload=newUpload();//實例化上傳類
$upload->maxSize=3145728;//設置上傳大小,位元組
$upload->exts=array('jpg','gif','png','jpeg');//限定後綴
$upload->savePath='./';//在根目錄Uploads下
$info=$upload->upload();//執行上傳方法

if(!$info){
$this->error($upload->getError());//錯誤了
}else{
$this->success('上傳成功!');//成功了
}
}

7. thinkphp怎麼上傳.apk的文件php5.4

就像普通上傳圖片一樣就可以的, 如果還有不明白的話咱倆可以一起去後盾人,找找看相關教材看看不就會了,希望能幫到你,給個採納吧謝謝

8. thinkphp 文件上傳問題

程序中最重要的方法就是upload了,調用它就可以進行無刷新上傳。
upload的過程是這樣的,首先用stop方法停止上一次上傳,並判斷是否選擇文件。
然後分別調用_setIframe,_setForm和_setInput,生成需要的iframe,form和input。
如果設置了timeout屬性的話,會自動設置計時器:
if ( this.timeout > 0 ) {
this._timer = setTimeout( $$F.bind(this._timeout, this), this.timeout * 1000 );
}
ps:經測試,小於0的延時時間,ie會取消執行,而其他瀏覽器會當成0執行。
程序有一個_sending屬性用來判斷上傳狀態。
在stop(停止),dispose(銷毀),_finis(完成),_timeout(超時)時會把它設為false。
而在上傳開始前要把它設置為true。
最後提交表單就開始上傳了。

閱讀全文

與thinkphp上傳apk文件相關的資料

熱點內容
最近很火的app軟體是什麼軟體 瀏覽:862
ai文字工具 瀏覽:157
蘭博玩游戲路徑怎麼選擇正確文件 瀏覽:972
淘寶直通車恢復老版本 瀏覽:510
播放草莓的圖片我都文件 瀏覽:55
微信大文件打不開 瀏覽:767
家裝合同准備哪些文件 瀏覽:296
應用bat合並excel文件 瀏覽:984
迅雷影音文件夾 瀏覽:109
makefile的文件路徑 瀏覽:392
計算機程序文件名擴展名為 瀏覽:982
網路游戲推廣策劃案 瀏覽:609
替換所有文件內容的代碼 瀏覽:960
不是常用數據模型有哪些 瀏覽:426
aspcms版本號 瀏覽:835
安卓怎麼用數據流量下載軟體 瀏覽:553
大眾手動空調數據流通道號是多少 瀏覽:303
手機qq令牌 瀏覽:737
cg原畫上色教程 瀏覽:993
婚介服務中心app怎麼做 瀏覽:43

友情鏈接