无法提取从magento下载的.tgz文件

时间:2015-06-12 09:02:03

标签: magento

我发现magento存在问题。我尝试通过压缩它和另一个pdf文件将一个.tgz压缩文件上传到magento。但是,当我尝试从magento下载时,.tgz文件已损坏。我已经在4-5个不同的场合看到了不同的文件因此我认为它与Magento有关吗?但是,只需将zip文件解压缩到PC中就可以了。

请告诉我可能的原因和解决方案。

3 个答案:

答案 0 :(得分:0)

如何通过FTP下载该压缩文件。 当您通过浏览器下载文件时,可能会出现中断

答案 1 :(得分:0)

您遇到的问题可能部分归因于Magento为压缩项生成(可能不正确)HTTP-Header的方式。最终的结果是项目可能会被破坏,因为它们可能会被双重压缩,但是,如果事实上这似乎是您遇到的问题,那么您可以做一些简单的事情。

  1. 请勿使用SetOutputFilter DEFLATE
  2. 请勿使用AddOutputFilterByType DEFLATE application/x-httpd-php
  3. 根据需要使用SetEnvIfNoCase
  4. 创建例外规则

    所有这些都是explained in more detail by Babs Gösgens,他也非常友好地提供了一个Magento .htaccess模板,其中包含处理其中一些问题的定义:

    <IfModule mod_deflate.c>
    
        AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
        AddOutputFilterByType DEFLATE application/xml application/xhtml+xml application/rss+xml
        AddOutputFilterByType DEFLATE application/javascript application/x-javascript
        #AddOutputFilterByType DEFLATE application/x-httpd-php
    
        BrowserMatch ^Mozilla/4 gzip-only-text/html
        BrowserMatch ^Mozilla/4\.0[678] no-gzip
        BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
    
        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
        SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
        SetEnvIfNoCase Request_URI \.(?:pdf|doc)$ no-gzip dont-vary
        SetEnvIfNoCase Request_URI \.(?:avi|mov|mp3|mp4|rm)$ no-gzip dont-vary
    
    </IfModule> 
    

答案 2 :(得分:0)

它不是magento的问题。它的标题问题。你也是如何下载文件的?你有直接下载的链接吗?如果是,则删除它并编写自定义操作以下载类似

的内容
public function downloadFileAction() {
        ignore_user_abort ( true );
        set_time_limit ( 0 ); // disable the time limit for this script

        $fullPath = Mage::getBaseDir () . "path_to_your_file/yourFile.tgz";

        if ($fd = fopen ( $fullPath, "r" )) {
            $fsize = filesize ( $fullPath );
            $path_parts = pathinfo ( $fullPath );
            $ext = strtolower ( $path_parts ["extension"] );
            switch ($ext) {
                case 'tgz':
                    header('Content-Description: File Transfer');
                    header('Content-Type: application/octet-stream');
                    header('Content-Length: ' . $fsize);
                    header('Content-Disposition: attachment; filename=' . $path_parts ["basename"]);
                    readfile($fullPath);
                default :
                    header ( "Content-type: application/octet-stream" );
                    header ( "Content-Disposition: filename=\"" . $path_parts ["basename"] . "\"" );
                    break;
            }
        }
    }

并将您的操作称为:

$this->getUrl('your_controler') ?>index/downloadFile

希望这会对你有所帮助