2013-05-06 65 views
0

我遇到了PHP和SQL Server的问题。将大文件上传并保存到数据库中作为varbinary

当我尝试将文件保存到数据库作为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" /> 

image.php文件包含以下内容:

header("Content-type: ".$fileType); 
header("Content-Length: ".$fileSize); 
header("Content-Disposition: inline; filename=".$fileName); 
echo $_SESSION['fileContent']; 

结果,我只得到了图像的一部分。

我的意思是它只加载实际图像的第一部分。它似乎只将内容的第一部分插入数据库而不是全部。

这怎么解决?

+1

上传文件时,您的php脚本超时了吗? – reikyoushin 2013-05-06 15:38:15

+0

是否有任何理由,特别是您将图像存储在数据库中,而不是作为文件?在大多数情况下,将文件存储为普通文件比将其存储在数据库中效率更高。 – 2013-05-06 15:39:48

+0

如果我问了关于将图像存储在数据库中的每个问题都有一美元。 。 。 。 – andrewWinn 2013-05-06 19:44:09

回答

0

检查表结构。这可能是该列可能没有设置为var(最大)

+0

图像的列类型是varbinary(MAX)。 – 2013-05-07 08:58:05

+0

我不认为问题是这种类型,因为当我保存小图像时,它完美地工作,因为它完全加载的图像的小尺寸。 – 2013-05-07 09:01:37

相关问题