Codeigniter多文件上传加密问题
我有一个很大的表单,允许用户上传多个文件/文件类型到他们正在创建的报价/出价。除了一件事之外,一切都运行良好:在保存到数据库之前对文件进行名称加密。Codeigniter多文件上传加密问题
我还没有找到它的韵或理由,但它的命中或错过。该图像每次都能正常工作。其他文件(允许所有[*]类型,但主要包括各种业务文档,例如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);
}
任何帮助将不胜感激。
你不是说明你的问题很清楚:
是名字根本就没有被加密,但仍然上传到正确的目录?
你是否将这些设置在一个循环中,其中类实例可能没有被重新初始化?第一个文件是否正确加密,但不是后面的文件?
你能跟踪哪些文件类型工作不正常吗?
我都很难相信它是完全“随机”,并认为这只是没有足够的研究这里正在做从下
解决方案:
您需要使用$这 - > upload- >初始化($ config)更改配置,因为该库只会加载一次
对不起,我想我已经清楚了:*保存到数据库之前,文件的名称加密*。不过,我可以看到它可能有点模棱两可。这只是加密部分是一个问题。文件名保存方式就好了。 'jpg'文件从来没有问题。有些pdf可以,有些不会。 doc/x文件一样。我可以做更多的测试,看看我是否找到了更好的模式。 – 2013-05-05 01:52:15
是的,这个函数在一个'foreach'循环中被调用。谢谢 - – 2013-05-05 01:56:35
第一:你应该返回$ data,而不是$ this-> upload-> data();第二:当您在循环中从一种类型更改为另一种类型时,我怀疑您的问题与文件有关?我认为你需要使用$ this-> upload-> initialize();不要尝试重新加载班级,因为CI已经将其注册了 – jmadsen 2013-05-05 02:42:56
那么你得到了什么文件名?原本的 ? – Aurel 2013-05-04 18:09:57
是,文件名。 – 2013-05-04 19:29:59
对不起,但问题是上传过程后,'$ this-> upload-> data()'中没有加密文件名? – Aurel 2013-05-04 19:41:16