您好:
我使用 Codeligniter 3.1.6 ,參考
https://segmentfault.com/a/1190000000396029
但結果卻
string(128) "
The filetype you are attempting to upload is not allowed.
The filetype you are attempting to upload is not allowed.
我有試著去 參考這一篇
https://www.itread01.com/content/1557134434.html
可以上傳,但會出現 2個檔案
https://www.mofish.work/thread/2693
也有去改
mimes.php
但都沒效
請問 這要由哪邊著手?
謝謝!
會有兩個檔案是因為你的確呼叫了兩次 do_upload
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Upload2 extends CI_Controller {
function index()
{
$this -> load -> view('uploader2.php');
}
function up()
{
// 把需要的配置放入config数组
$config['upload_path'] = './uploads';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '102400';
$this->load->library('upload', $config); //调用CI的upload类
//$this->upload->do_upload('upfile'); //使用do_upload('上传框的name')方法进行上传
// 以下代码为拓展的,非必要
if ($this->upload->do_upload('upfile')) { //上传成功
$data = array('upload_data' => $this->upload->data()); //将文件信息存入数组
var_dump($data); //打印文件信息
} else { //上传失败
$error = array('error' => $this->upload->display_errors());//将错误信息存入数组
var_dump($error); //打印错误信息
}
}
}
把 if 前面呼叫的那個do_upload拿掉應該就正常了
你的 code 我只拿掉那行
就可以正常運作
gif|jpg|png 都可以正常上傳
話說你之前的問題都解決了嗎
發問斷尾
久而久之會越少人回答喔
「原來網站的jpg 或下載存PNG 所致」
就是我說的檔案類型的判斷不同。
一般很多人都以為直接改副檔名就行了。
其實某些類型的檔案,都會記錄實體的規範類別是什麼。
如圖片檔幾乎都會記錄。
所以一但你下載了jpg檔,並將其改名成png。或許你是想要分類成png。
但程式判斷下的類別其實還是原本的jpg。
您好:
謝謝!
只是 為何 x.jpg 改名為 x.png
但 $config['allowed_types'] = 'gif|jpg|png|jpeg'; //可上傳類型
兩者都有,為何 無法丟上去??
我用
echo (mime_content_type($_FILES["upfile"]["tmp_name"])) . "" ;
有抓出 TYPE,但 這 結果,也使能DEUBG用,無法 轉換?讓上它可上傳!
謝謝!
所以你用
mime_content_type 拿到的結果是什麼
mime_content_type只是用來看 mime type 而已
沒有什麼轉換的功能
依其錯誤訊息是告訴你該檔案型態不允許上傳。
因為你並未po出你實際寫的程式碼,也未說你上傳的東西是什麼。
基本判斷如下。
你上傳了你並未允許的檔案型態。(廢話)。
只是這邊要注意一件事。所謂的檔案型態有分副檔名判斷跟檔案實際類別判斷。
其中單純用副檔名判斷的。會比較單純點只要副檔名對就行了。只是也有可能會因為某些原因造成錯誤。如將png圖檔改名成jpg副檔名的情況。就很容易發生這樣的問題。
您好:
不好意思,單存用
<form action="upload2/up" method="post" enctype="multipart/form-data">
<input type="file" name="upfile">
<input type="submit" name="sub" value="submit">
</form>
及
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Upload2 extends CI_Controller {
function index()
{
$this -> load -> view('uploader2.php');
}
function up()
{
// 把需要的配置放入config数组
$config['upload_path'] = './uploads';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '102400';
$this -> load -> library('upload', $config); //调用CI的upload类
$this -> upload -> do_upload('upfile'); //使用do_upload('上传框的name')方法进行上传
// 以下代码为拓展的,非必要
if ($this -> upload -> do_upload('upfile')) { //上传成功
$data = array('upload_data' => $this -> upload -> data()); //将文件信息存入数组
var_dump($data); //打印文件信息
} else { //上传失败
$error = array('error' => $this -> upload -> display_errors());//将错误信息存入数组
var_dump($error); //打印错误信息
}
}
}
那我該如何 副檔名判斷 跟 檔案實際類別判斷
我有從網路上抓下來 jpg,但 也無法上傳...
他這一個範例,應該只是「副檔名」判斷吧
謝謝!
noway
你的coding style要調整一下。
=號的左右間隔這是明確區分變數和值所以ok。
但是->為標示物件的屬性或是方法,其為所屬物件的內容,這種的左右就不要加空白。