代码中的logMessage()和Directory()是自己封装的记录日志和递归创建文件夹助手函数
注意修改!!!
点击查看:Directory() logMessage()
<?php
/**
* Created by PhpStorm.
* User: 123
* Date: 2018/9/13
* Time: 14:56
*/
class Images
{
private $CI_instance;
public function __construct()
{
$this->CI_instance =& get_instance();
}
/**
* 文件上传
*/
public function upload($name = '')
{
//修改文件之前先删除原来的图片
$post = $this->CI_instance->input->post();
if (isset($post[$name]) && !empty($post[$name]) && !is_dir($post[$name]) && file_exists($post[$name])){
unlink($post[$name]);
}
//获取文件的大小
$file_size = $_FILES[$name]['size'];
if($file_size > (2 * 1024 * 1024)) {
logMessage('error' , '文件上传失败!name='.$name.'错误原因:文件大于2M size='.$file_size);
return false;
}
//判断是否上传成功(是否使用post方式上传)
if(!is_uploaded_file($_FILES[$name]['tmp_name'])) {
logMessage('error' , '文件上传失败!name='.$name.'错误信息:文件没有传进来');
return false;
}
$move_to_file = $this->filePath($_FILES[$name]['name']);
//判断移动成功还是失败
if(!move_uploaded_file($_FILES[$name]['tmp_name'],iconv("utf-8","gb2312",$move_to_file))) {
logMessage('error' , '文件上传失败!name='.$name.'错误原因:文件移动失败!');
return false;
}
return $this->databasesPath($move_to_file);
}
/**
* 多文件上传
*/
public function uploads($name) {
//获取文件的大小
foreach ($_FILES[$name]['size'] as $size_key => $size_val){
if($size_val > (2 * 1024 * 1024)) {
logMessage('error' , '文件上传失败!name='.$name.'错误原因:key='.$size_key.'文件大于2M size='.$size_val);
return false;
}
}
$data = array();
for ($i = 0 ; $i < count($_FILES[$name]['tmp_name']) ; $i++){
$uploaded = is_uploaded_file($_FILES[$name]['tmp_name'][$i]);
//判断是否上传成功(是否使用post方式上传)
if($uploaded) {
$move_to_file = $this->filePath($_FILES[$name]['name'][$i]);
if(move_uploaded_file($_FILES[$name]['tmp_name'][$i],iconv("utf-8","gb2312",$move_to_file))) {
$data[] = $this->databasesPath($move_to_file);
} else {
//文件上传失败
continue;
}
} else {
//文件没有穿进来
continue;
}
}
return $data;
}
/**
* 下载文件
* @param $uploaded_file
* @return bool|string
*/
public function downloadFile($file_path_tmp){
if (!isset($file_path_tmp) || empty($file_path_tmp))return false;
// curl下载文件
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $file_path_tmp);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_info = curl_exec($ch);
if (!$file_info){
logMessage('error' , '下载失败!'.curl_error());
}
curl_close($ch);
$file_path = $this->filePath($file_path_tmp);
if (!file_put_contents($file_path ,$file_info)){
return false;
}
return $this->databasesPath($file_path);
}
/**
* 截取数据库存储路径
* @param $file_path
* @return bool|string
*/
public function databasesPath($file_path){
return substr($file_path , strpos($file_path , 'uploads'));
}
/**
* 生成文件存储路径
* @return bool
*/
public function generatedDirectory(){
$file_dir = str_replace('\\','/',FCPATH).'uploads/'.date('Y/m/d');
Directory($file_dir);
return $file_dir;
}
/**
* 文件路径
* @param $file_path
* @return string
*/
public function filePath($file_path){
$file_name = uniqid();//图片名称
return $this->generatedDirectory().'/'.$file_name.$this->fileSuffix($file_path);
}
/**
* 获取文件尾缀
* @param $file_path
* @return bool|string
*/
public function fileSuffix($file_path){
$directory_suffix = substr($file_path , strrpos($file_path , '.'));
$arr = array('.jpg','.png','.jpeg','.gif','.mp4');
if (!in_array($directory_suffix,$arr)){
$directory_suffix = '.jpg';
}
return $directory_suffix;
}
}