我的媒体文件在下载时会丢失所有元信息。我有一个网站,提供可下载的虚拟产品。它会影响此处的Android应用文件,即apk。
如果我要下载并安装文件,则会出现以下错误。
解析程序包时出现问题。
下载软件包(apk)不包含版本号,文件大小,软件包名称。它仅显示N / A。
场景:
我已经直接从vmfiles文件夹通过ftp下载了apk文件。 可用的元数据-安装正常。
下载网站-文件不包括版本号,文件大小,程序包名称。安装失败并显示以上消息。
我与之合作:
我将数据库切换到utf8mb4,因为我需要文本和描述中的符号。从那时起,我认为下载的产品可能无法使用。
我修改了varchar字段varchar(191),或将其更改为文本。我只是不知道丢失包裹信息的原因,方式和地点。
这是另一个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 Studio在打开下载的.apk文件时说:
未知块类型:835 java.lang.NullPointerException:未知块类型:835
Virtuemart与utf8一起使用,mysql支持Multi(utf8 + utf8mb4)。我的系统是使用utf8mb_unicode_ci设置的。
我应该切换到连接编码utf8mb4_bin吗? Virtuemart意识到了吗?我一定会尝试的。
我发现了另一个有关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];
}
这样的事情是否应该和我一起纳入Virtuemart模型中?我在某个地方从Java二进制变量中读取了一些专门用于utf8mb4调用处理的内容。您必须设置此额外功能。另外,附上'? JDBC URL下载链接的UseUnicode = true和characterEncoding = UTF-8'没有帮助。
答案 0 :(得分:1)
在另一个论坛中编码上帝可以进一步帮助我,找到解决方法:-)
在使用的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;
}