我在网站上有一个简单的图像上传表格,用户可以一次上传多个图像.我想按以下格式在月份和年份的文件夹中组织图像:MONTH-YEAR,因此每次开始新的上传时,我都会首先检查该文件夹是否存在,如果不存在则创建一个.
问题是,如果该文件夹在当月不存在,而我尝试上传图像,则表示该月的文件夹已正确创建,但是没有图像被上传.但是,如果该文件夹已经存在,则可以毫无问题地上传所有图像.这是我的代码:
$folderName = date('m-y');
$pathToUpload = './uploads/photos/' . $folderName;
if ( ! file_exists($pathToUpload) )
{
$create = mkdir($pathToUpload, 0777);
$createThumbsFolder = mkdir($pathToUpload . '/thumbs', 0777);
if ( ! $create || ! $createThumbsFolder)
return;
}
$imgName= uniqid('', TRUE);
$config['upload_path'] = $pathToUpload;
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '9999';
$config['file_name'] = $imgName . '.jpg';
$this->upload->initialize($config);
$upload = $this->upload->do_upload("Filedata");
有什么想法为什么第一次无法上传?
解决方法:
不要听这些家伙.您的逻辑很好-如果mkdir()两次都返回false,则它应该失败.
但是,正如mazzzzz建议的那样,在这种情况下,我将抛出异常,而不是返回false.
我也会这样做(而不是多次调用mkdir()):
<?php
mkdir($pathToUpload . '/thumbs', 0777, TRUE);
这将以递归方式创建创建thumbs文件夹所需的所有丢失目录,我怀疑这还是您失败的地方.
如果不是这种情况,则说明您没有特权,如果您可以上传文件,则似乎不太可能.
此外,您可能会遇到统计信息缓存问题.尝试在do_upload()之前运行clearstatcache()