Php 将大文件作为varbinary上传并保存到数据库中
我的PHP和SQL Server有问题 当我尝试以Php 将大文件作为varbinary上传并保存到数据库中,php,sql-server,Php,Sql Server,我的PHP和SQL Server有问题 当我尝试以varbinary(MAX)类型将文件保存到数据库中时,效果非常好,但当我尝试在结果中保存180k或更大的文件时,我只得到部分图像: $handle = @fopen($fileTmpName, 'rb'); if ($handle) { $content = @fread($handle, filesize($fileTmpName)); $content = bin2hex($content); @fc
varbinary(MAX)
类型将文件保存到数据库中时,效果非常好,但当我尝试在结果中保存180k或更大的文件时,我只得到部分图像:
$handle = @fopen($fileTmpName, 'rb');
if ($handle)
{
$content = @fread($handle, filesize($fileTmpName));
$content = bin2hex($content);
@fclose($handle);
}
$select = mssql_query("EXEC [DB_Name].[dbo].[Table_Name] @Data = ".$content."");
$result = mssql_fetch_array($select);
$_SESSION['fileContent'] = $result['Data'];
<img src="../applications/framework/images.php" />
因此,我只能得到部分图像
我的意思是,它只加载真实图像的第一部分。它似乎只将内容的第一部分而不是全部插入数据库
如何解决这个问题?检查表结构。可能是该列未设置为var(max)上载文件时,php脚本是否超时?是否有任何特殊原因将图像存储在数据库中而不是作为文件?在大多数情况下,将文件存储为普通文件比将其存储在数据库中更有效。如果我有一美元来回答关于将图像存储在数据库中的问题。及时上传没有任何问题,它成功了,没有任何可见的错误,问题是之后当我想从数据库中获取它时,我只得到了图像的一部分。图像的列类型是varbinary(MAX)。我认为问题不在于类型,因为当我保存小图像时,它确实工作得很好,因为图像的大小很小,所以它可以完全加载。
header("Content-type: ".$fileType);
header("Content-Length: ".$fileSize);
header("Content-Disposition: inline; filename=".$fileName);
echo $_SESSION['fileContent'];