【发布时间】:2011-04-08 20:41:09
【问题描述】:
我正在构建一个应用程序,它需要获取上传的文件并将它们放在缩略图和全尺寸图像的单独目录中。但是 $config['upload_path'] = './uploads/';只允许我选择一个上传路径。 如何定义两个或多个上传路径?
【问题讨论】:
标签: file codeigniter upload path
我正在构建一个应用程序,它需要获取上传的文件并将它们放在缩略图和全尺寸图像的单独目录中。但是 $config['upload_path'] = './uploads/';只允许我选择一个上传路径。 如何定义两个或多个上传路径?
【问题讨论】:
标签: file codeigniter upload path
实际上,您需要做的就是“重新初始化”上传类。 Codeigniter 不允许您使用新参数调用该类两次(它忽略第二个请求),但是您可以告诉该类手动加载新参数。以下是基础知识:(注意“$this->upload->initialized($config)”这一行,这是关键。
// this is for form field 1 which is an image....
$config['upload_path'] = './uploads/path1';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->upload->initialize($config);
$this->upload->do_upload($fieild_1);
// this is for form field 2 which is a pdf
$config['upload_path'] = './pdfs/path2';
$config['allowed_types'] = 'pdf';
$config['max_size'] = '300';
$this->upload->initialize($config);
$this->upload->do_upload($fieild_2);
我在这里写了一篇关于它的整篇文章: http://taggedzi.com/articles/display/multiple-file-uploads-using-codeigniter
您可以在第二个初始化脚本中更改任何允许的参数,以便您的第二个文件可以具有完全不同的结构。您可以根据需要多次执行此操作,只需为每种文件类型重新初始化即可。 (如果你愿意,你甚至可以设置一个配置数组并循环...)
希望这会有所帮助。
【讨论】:
您在这里混淆了两个问题。您需要将问题进一步分解为离散任务。
首先,你需要设置合适的上传目录。在我的网站上,每个用户都被定向到他们自己的上传目录:
/images/member/1
/images/member/2
/images/member/3
我的控制器根据用户 ID 动态设置上传目录
$config['upload_path'] = "/images/member/$user_id";
其次,您需要处理上传的文件,创建调整大小和缩略图的图像。我的图像处理库使用传递给 $config['upload_path'] 的相同路径作为其根目录,并将其输出放置到相对于该动态根目录的子目录中:
/images/member/1/resized
/images/member/1/thumbnails
我的网站实际上比这要复杂一些。但关键是动态设置 $config['upload_path'] 可以让您拥有任意数量的上传路径。
【讨论】:
简短(但令人失望)的答案是:CodeIgniter 的文件上传类被设计为每个表单接受 1 个上传的文件。
【讨论】: