Codeigniter多文件上传加密问题

时间:2013-05-04 17:05:52

标签: php codeigniter file-upload

我有一个大表单,允许用户将多个文件/文件类型上传到他们正在创建的商品/出价中。除了一件之外,一切都运行正常:保存到数据库之前文件的名称加密。

我没有找到它的押韵或理由,但它的命中或错过。图像每次都很好用。其他文件(允许所有[*]类型,但主要包括各种商业文档,如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);
        }

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

你没有非常明确地陈述你的问题:

这些名称是不加密的,但仍然上传到正确的目录?

您是否在循环中设置这些,可能还没有重新初始化类实例?第一个文件是否正确加密,而不是后续加密?

您可以跟踪哪些文件类型无法正常工作吗?

我很难相信它完全是“随机的”,并认为这里没有进行足够的研究


以下解决方案:

您需要使用$ this-> upload-> initialize($ config)来更改配置,因为该库只会加载一次

相关问题