我有一个大表单,允许用户将多个文件/文件类型上传到他们正在创建的商品/出价中。除了一件之外,一切都运行正常:保存到数据库之前文件的名称加密。
我没有找到它的押韵或理由,但它的命中或错过。图像每次都很好用。其他文件(允许所有[*]类型,但主要包括各种商业文档,如pdf,doc,xls等)是不稳定的。
我在SO和其他地方找到了关于名称加密的一般问题的线索,但还没有找到一个处理我的问题的特殊性的问题。
这是上传功能:
//for multi uploads
function do_uploads($name, $file)
{
$status ="";
$msg = "";
$file_element_name = $name;
//go through and figure out where it goes
if($name == "QuoteDoc") {
$folder = "quotedocs";
$allowed = '*';
}
else if($name == "ProductOfferPhoto") {
$folder = "product_photos";
$allowed = 'jpeg|jpg|png|gif';
}
else if($name == "ResearchWhtPaper1" || $name == "ResearchWhtPaper2") {
$folder = "research";
$allowed = "*";
}
else if($name == "ProductLiterature1" || $name == "ProductLiterature2") {
$folder = "literature";
$allowed = "*";
}
else if ($name == "FDALink") {
$folder = "fda";
$allowed = "*";
}
$config['upload_path'] = './uploads/' . $folder;
$config['allowed_types'] = $allowed;
$config['max_size'] = 1024 * 8;
$config['encrypt_name'] = TRUE;
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload($name))
{
$status = 'error';
$msg = $this->upload->display_errors('', '');
}
else {
$data = $this->upload->data();
}
@unlink($_FILES[$file_element_name]);
//what's up?
//return $this->upload->data();
return array('status' => $status, 'msg' => $msg, 'data' => $this->upload->data(), 'allowed'=>$allowed);
}
非常感谢任何帮助。
答案 0 :(得分:1)
你没有非常明确地陈述你的问题:
这些名称是不加密的,但仍然上传到正确的目录?
您是否在循环中设置这些,可能还没有重新初始化类实例?第一个文件是否正确加密,而不是后续加密?
您可以跟踪哪些文件类型无法正常工作吗?
我很难相信它完全是“随机的”,并认为这里没有进行足够的研究
以下解决方案:
您需要使用$ this-> upload-> initialize($ config)来更改配置,因为该库只会加载一次