我試圖讓上傳過程中文件的擴展名,但我得到一個錯誤的擴展路徑信息需要一個字符串:入門上傳文件的yii2
我曾嘗試:
$path_parts = pathinfo($_FILES['evidence']['name']);
echo $path_parts['extension'];
如何提取文件的擴展名,例如jpeg
,doc
,pdf
等
我試圖讓上傳過程中文件的擴展名,但我得到一個錯誤的擴展路徑信息需要一個字符串:入門上傳文件的yii2
我曾嘗試:
$path_parts = pathinfo($_FILES['evidence']['name']);
echo $path_parts['extension'];
如何提取文件的擴展名,例如jpeg
,doc
,pdf
等
這是更好,因爲框架提供的抽象與類yii\web\UploadedFile直接Yii2不使用$_FILES
。還有描述使用上傳文件的separate page in guide。
有一個模型的例子。
namespace app\models;
use yii\base\Model;
use yii\web\UploadedFile;
class UploadForm extends Model
{
/**
* @var UploadedFile
*/
public $imageFile;
public function rules()
{
return [
[['imageFile'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg'],
];
}
public function upload()
{
if ($this->validate()) {
$this->imageFile->saveAs('uploads/' . $this->imageFile->baseName . '.' . $this->imageFile->extension);
return true;
} else {
return false;
}
}
}
正如你所看到的,延長使用extension財產($this->imageFile->extension
)提取。
還有更多關於表單設置,控制器處理,上傳多個文件的信息。所有這些都可以通過上面提到的鏈接找到。
我通常在yii2 kartik文件輸入中使用ajax上傳,並且文件以$ _FILE形式傳遞 –
根據問題添加相關細節,因爲存在目前狀態中沒有提及它。但是最好使用'UploadedFile'。 – arogachev
如果使用yii2卡爾蒂克文件輸入,你可以得到的yii\web\uploadedFile實例這種方式:
$file = UploadedFile::getInstanceByName('evidence'); // Get File Object byName
// Then you can get extension by this:
$file->getExtension()
如果您想驗證文件以及那麼你可以使用FileValidator使用adhoc role:
$validator = new FileValidator(['extensions' => ['png','jpg']]);
if($validator->validate($file, $errors)) {
// Validation success now you can save file using $file->saveAs method
} else {
// ToDO with error: print_r($errors);
}
使用你的例子後,得到一個錯誤的get->擴展到一個非對象我也添加了使用yii \ web \ UploadedFile; –
請確保您在執行var_dump($ _ FILE ['evidence'])後獲得'$ _FILE ['evidence']' –
中的值'\t array(size = 5) 'name'=> array(size =') 0 => string'254 713 107599 20150705_081219.jpg' 'tmp_name'=> array(size = 1) 0 => string'C:\ wamp \ tmp \ php67CF.tmp'(length = 23) 'error'=> array(size = 1) 0 = > int 0 'size'=> array(size = 1) 0 => int 51 830 –
它是什麼顯示var_dump($ _FILES ['evidence'] ['name])? –
am getting array(size = 1) 0 => string'254700916814.jpg'(length = 16) –
所以你傳遞了一個文件數組。你有名字在$ _FILES ['evidence'] ['name] [0] –