我有一个允许文件上传的表单。它添加到数据库很好,但它不会将文件保存到指定的文件夹。我的视图和模型代码如下(我的控制器只是检查文件是否已设置,然后继续上传)
查看:
<form action="admin/admin_area/save_personnel" method="post" enctype="multipart/form-data" id="add_personnel">
<input type="file" name="offshore_medical_certificate" />
</form>
控制器:
function uploadOffshoreMedical($uid)
{
$status = "";
$msg = "";
$file_element_name = 'offshore_medical_certificate';
$certificate_name = 'Offshore Medical';
if ($status != "error")
{
$config['upload_path'] = './certificate_files/';
$config['allowed_types'] = 'pdf|doc|docx|txt|png|gif|jpg|jpeg|';
$config['max_size'] = 1024 * 8;
$config['encrypt_name'] = TRUE;
$this->load->library('upload', $config);
if (!$this->upload->do_upload($file_element_name))
{
$status = 'error';
$msg = $this->upload->display_errors();
}
else
{
$data = $this->upload->data();
$file_id = $this->saveCertificate($uid, $data['raw_name'], $data['file_ext'], $certificate_name);
}
if($file_id)
{
$status = "success";
$msg = "File successfully uploaded";
}
else
{
unlink($data['full_path']);
$status = "error";
$msg = "Something went wrong when saving the file, please try again.";
}
@unlink($_FILES[$file_element_name]);
}
echo json_encode(array('status' => $status, 'msg' => $msg));
}
我从表单中获取了正确的文件名,我上传的文件大小正确,文件扩展名正确。我正在使用localhost,因此文件夹权限很好,但由于某种原因它只是无法正常工作。我最近在另一个项目上做了类似的事情,但我似乎无法找到问题。
非常感谢任何帮助。
编辑:
如果我打印$ data,我会得到以下内容
Array ( [file_name] => 08f8ce288e45207735bdb3f0c3139a0a.txt [file_type] => text/plain [file_path] => C:/wamp/www/marine/certificate_files/ [full_path] => C:/wamp/www/marine/files/08f8ce288e45207735bdb3f0c3139a0a.txt [raw_name] => 08f8ce288e45207735bdb3f0c3139a0a [orig_name] => license.txt [client_name] => license.txt [file_ext] => .txt [file_size] => 2.44 [is_image] => [image_width] => [image_height] => [image_type] => [image_size_str] => )
{"status":"error","msg":"Something went wrong when saving the file, please try again."}
答案 0 :(得分:0)
我建议您使用Uploadify http://www.uploadify.com
这是一个非常容易使用的jQuery插件,带有惊人的文档。我开始使用它,因为我开始编码,从来没有任何问题。
通过这种方式,您可以轻松解决两个项目的问题。