小编Kha*_*led的帖子

强制从s3亚马逊服务器下载

我一直在开发一个新的Web应用程序,它依赖于Amazon S3服务器作为存储系统,Codeiginter作为PHP框架.

我需要在单击链接时强制下载文件.原始网址如下所示:

http://www.our-web.com/download/do/1.jpg

它生成一个临时签名的URL到Amazon S3服务器上的实际文件,如下所示:

http://main_bucket.s3.amazonaws.com/post/1/1.jpg?AWSAccessKeyId=AKIAJEOQKYPKC3CCU5RA&Expires=1305395426&Signature=iuzCdA22gImLK192%2BMAhk8OkAY8%3D

我需要在用户点击链接后立即从真正的Amazon URL开始下载文件.

我现在有两种方法可以这样做:

  1. 使用redirect()会打开文件而不下载它; 要么
  2. 改变标题为此代码:

    header('Content-type: application/force-download');
    header('Content-Disposition: attachment; filename=' . $file_name);
    header('Content-Transfer-Encoding: binary');
    header('Expires: 4000');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($generated_file));
    
    readfile($generated_file);
    
    Run Code Online (Sandbox Code Playgroud)

不幸的是,这两种方式对我没有帮助.第二种方法导致下载来自我的网站,而不是直接来自亚马逊.

如何强制文件直接从Amazon S3服务器下载,而不是从我的网站下载?

php codeigniter download amazon-s3

21
推荐指数
3
解决办法
2万
查看次数

在codeigniter中进行Ajax表单验证

hellp伙计们,

我最近一直在研究ajax,我在使用codeigniter表单验证库时遇到了问题.我使用了函数http://formtorch.geekhut.org/中生成的工具示例 .现在,当我使用json_encode()带有伪数据的函数时,ajax可以正常工作并正确返回数据,但是示例中的验证使用validation库而不是form_validation库,这似乎是旧版本.

为此,在该示例中验证不适用于ajax,特别是$this->form_validation->run()函数使得ajax返回没有结果,即使我json_encode()在开头使用回显虚拟数据create_course().

那么使用ajax验证有什么问题,并向我解释一下控制器收到的ajax发送的数据.

所以这是我的代码:

    function create_course()
{   
        $this->form_validation->set_rules('course_code', 'course_code', 'trim|xss_clean|required');
        $this->form_validation->set_rules('name', 'name', 'xss_clean|required');
        // .. etc           
        if ($this->form_validation->run()) {            
            // validation ok
            $data['course_code'] = $this->form_validation->set_value('course_code');
            $data['name'] = $this->form_validation->set_value('name');
            // ... etc
            if ($this->models_facade->create_course($user_id,$data))    {   // success
                    $data = array( 'profile_change' => $this->lang->line('profile_change'));
            } else {                    // fail 
                    $data = array( 'profile_change_error' => $this->lang->line('profile_change_error'));
            }
        }
        else
        {
            $data = array(
                    'course_code' => $this->form_validation->course_code_error, 
                    'name' …
Run Code Online (Sandbox Code Playgroud)

validation jquery codeigniter

9
推荐指数
3
解决办法
2万
查看次数

标签 统计

codeigniter ×2

amazon-s3 ×1

download ×1

jquery ×1

php ×1

validation ×1