我的媒体文件在下载时会丢失所有的元信息。我有一个可下载的虚拟产品的网站。它影响到这里的Android应用程序文件,apk的。
如果我想下载并安装这些文件,我会得到以下错误。
解析包时出现了问题。
下载包(apk)不包括版本号、文件大小、包名。它只显示N/A。
设想情况:
我的工作是:
我将数据库切换到utf8mb4,因为我需要文本和描述中的符号。从那时起,我认为下载的产品可能无法使用。
我修改了varchar字段varchar (191),或者将它们更改为text。我只是不知道为什么,如何和哪里的包信息丢失。
下面是另一个phpmyadmin mysql变量/排序规则查询:
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在这里丢失:
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下载链接没有帮助。
发布于 2019-05-24 10:28:37
另一个论坛中的编码上帝可以帮助我进一步找到解决方案:-)在使用过的readfile_chunked查询器中,这里是否删除了输出缓冲区。解决方案是将ob_clean ()放在while循环之前。
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;
}https://stackoverflow.com/questions/56288602
复制相似问题