首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Virtuemart媒体文件在下载时丢失所有元信息

Virtuemart媒体文件在下载时丢失所有元信息
EN

Stack Overflow用户
提问于 2019-05-24 08:24:37
回答 1查看 112关注 0票数 0

我的媒体文件在下载时会丢失所有的元信息。我有一个可下载的虚拟产品的网站。它影响到这里的Android应用程序文件,apk的。

如果我想下载并安装这些文件,我会得到以下错误。

解析包时出现了问题。

下载包(apk)不包括版本号、文件大小、包名。它只显示N/A。

设想情况:

  • 我已经从vmfiles文件文件夹直接通过ftp下载了apk文件。元数据可用-安装正常。
  • 下载网站-文件不包括版本号,文件大小,包名。安装失败与上述消息。

我的工作是:

  • VirtueMart 3.2.15蓝色Corvus 9877
  • Joomla 3.8.7
  • OpenTools Virtuemart下载出售插件

我将数据库切换到utf8mb4,因为我需要文本和描述中的符号。从那时起,我认为下载的产品可能无法使用。

我修改了varchar字段varchar (191),或者将它们更改为text。我只是不知道为什么,如何和哪里的包信息丢失。

下面是另一个phpmyadmin mysql变量/排序规则查询:

代码语言:javascript
复制
SHOW VARIABLES LIKE 'char%'

--------------------
Web server productive:
-------------------------------------
variable_name value
character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database utf8mb4
character_set_filesystem binary
character_set_results utf8mb4
character_set_server utf8
character_set_system utf8
character_sets_dir / usr / share / mysql / charsets /

----------
Local Host:
-------------------------------------
Variable_name Value
character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database utf8mb4
character_set_filesystem binary
character_set_results utf8mb4
character_set_server utf8mb4
character_set_system utf8
character_sets_dir C: \ xampp \ mysql \ share \ charsets \

我已经在2016年2月从OpenTools购买了这个软件。软件没有得到更多的支持。也许我可以在论坛上或通过电子邮件联系到某人。正如我所说的,服务器上上传的文件仍然很好。下载软件通过readfile_chunked逐字节读取下载链接的文件流。

也许需要在这里编码一些base64之类的东西?或者是其他地方的错误?

Android在打开下载的.apk文件时说:

未知块类型: 835 java.lang.NullPointerException:未知块类型: 835

Virtuemart使用utf8,mysql支持多个(utf8 + utf8mb4)。我的系统是用utf8mb_unicode_ci建立的。

我应该切换到连接编码utf8mb4_bin吗?德图马特意识到了吗?我现在一定要试试。

我找到了另一个关于mysql_encoding的代码片段:

utf8mb4在这里丢失:

代码语言:javascript
复制
switch($mysql_encoding[0])
{
    case "utf8":
        return "utf-8";
        break;
    case "latin1":
        return "iso-8859-1";
        break;
    default:
        return $mysql_encoding[0];
}

这样的东西应该和我一起进入虚拟模型吗?在某个地方,我从Java二进制变量中读到了一些专门用于utf8mb4调用处理的内容。你必须设置这个额外的。还有附加?UseUnicode = true & characterEncoding = UTF-8‘到JDBC下载链接没有帮助。

EN

回答 1

Stack Overflow用户

发布于 2019-05-24 10:28:37

另一个论坛中的编码上帝可以帮助我进一步找到解决方案:-)在使用过的readfile_chunked查询器中,这里是否删除了输出缓冲区。解决方案是将ob_clean ()放在while循环之前。

代码语言:javascript
复制
function readfile_chunked($filename, $retbytes=true)
{
    $ chunksize = 1 * (1024 * 1024); // how many bytes by chunk
    $ buffer = '';
    $ cnt = 0;
                    
    $ handle = fopen ($ filename, 'rb');

    if ($ handle === false) 
    {
       return false;
    }
    ob_clean ();

    while (! feof ($ handle)) 
    {
       $ buffer = fread ($ handle, $ chunksize);
       echo $ buffer;
       ob_flush ();
       flush ();
                           
       if ($ retbytes) 
       {
          $ cnt + = strlen ($ buffer);
       }
    }                  
    $ status = fclose ($ handle);

    if ($ retbytes && $ status) 
    {
       return $ cnt; // return num. bytes delivered like readfile () does.
    }                   
    return $ status;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56288602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档