Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将大文件作为varbinary上传并保存到数据库中_Php_Sql Server - Fatal编程技术网

Php 将大文件作为varbinary上传并保存到数据库中

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

我的PHP和SQL Server有问题

当我尝试以
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'];