Php 上传时出错&;使用MySQL LONGBLOB下载二进制文件

Php 上传时出错&;使用MySQL LONGBLOB下载二进制文件,php,mysql,file,binary,blob,Php,Mysql,File,Binary,Blob,我正在使用托管MySQL数据库中的LONGBLOG字段上载和下载附件。我使用了在中找到的示例代码,并已将文件上载到数据库中(尽管无法检查文件中的每个字节) 我下载这些文件时遇到问题:txt文件可以,但JPEG或PDF等二进制文件总是有错误。这些二进制文件中的字节在上载或下载过程中,或在上载和下载过程中都发生了更改 我认为这可能是一个排序问题,但无法修复它 有人能给点建议吗?你链接页面上的例子是非常错误的。它使用addslashes()作为MySQL的转义函数,并且没有正确地清除魔引号 不要使用这

我正在使用托管MySQL数据库中的
LONGBLOG
字段上载和下载附件。我使用了在中找到的示例代码,并已将文件上载到数据库中(尽管无法检查文件中的每个字节)

我下载这些文件时遇到问题:txt文件可以,但JPEG或PDF等二进制文件总是有错误。这些二进制文件中的字节在上载或下载过程中,或在上载和下载过程中都发生了更改

我认为这可能是一个排序问题,但无法修复它


有人能给点建议吗?

你链接页面上的例子是非常错误的。它使用
addslashes()
作为MySQL的转义函数,并且没有正确地清除魔引号

不要使用这个例子

如果您使用
file\u get\u contents()
读取所有字节,则只需在其上使用
mysqli\u real\u escape\u string()
,并将其放入字符串字段


Longblobs没有编码,因此这在这里不应该是个问题,但最好将数据库连接的编码设置为正确的值。

谢谢!我更改了用于上传的PHP代码:
$mysqli=newmysqli(…)$fileName=mysqli\u real\u escape\u字符串($mysqli,$\u FILES['file']['name'])$fileType=mysqli\u real\u escape\u字符串($mysqli,$\u FILES['file']['type'])$文件大小=$_文件['file']['size']$content=mysqli\u real\u escape\u string($mysqli,file\u get\u contents($\u FILES['file']['tmp\u name']))‌​‌​); $sql=“插入到附件集中文件名=”“$fileName.”,文件类型=“$fileType.”,文件大小=“$fileSize.”,文件内容=“$Content.”,“;$result=mysqli\u查询($mysqli,$sql);此代码有效吗?示例代码的下载部分如何?我重试了,但下载的文件仍被解释为文本编码而不是二进制。我无法读取此注释中的代码。请更新您的问题。是否添加了正确的“内容类型”图片的标题?谢谢,我可以根据你的建议上传文件,并在MySQL Workbench中进行验证。上传到服务器的二进制文件没有错误。唯一的问题是如何将blob检索回浏览器。以下载或可用图像的形式发送回?你的教程在第一个方面的错误较少,但你真的应该使用correct
内容类型
指定例如“image/png”。在这种情况下,您可以省略
内容配置
——它仅用于在下载时作为建议传输文件名。