使用PHP显示上传到MSSQL的文件的问题

时间:2014-01-30 17:23:13

标签: php sql-server

我正在处理一个允许用户将所选文件上传到数据库的表单。要测试并确保上传成功,我正在尝试查看上传的文件。

当文件是文本文件时,我的代码正常工作,我可以看到上传的数据。 然而,当它是一张图像时,我遇到了麻烦。在一种情况下,图像部分显示(例如,前15% - 见屏幕截图),其余为空白。partial image

在另一种情况下,我收到消息“图像”我的php文件“无法显示,因为它包含错误”。

数据库字段是varbinary(max)。部分显示的文件是filesize 74403(字节),并且给出错误的文件是168801.在上传之前,我检查文件大小($ _FILES ['userfile'] ['size'])以验证它小于10000000字节。所以,我不认为我的问题与上传时被截断的文件数据有关。

这是上传和查看的相关代码:

                    $sql = "INSERT INTO Database.dbo.Table (name, filetype, filesize, insertdatetime, image) OUTPUT INSERTED.ID VALUES ('$filename','$filetype','$filesize',getdate(),0x".$data['hex'].");";

                // insert the image
                $result = odbc_exec($connect,$sql) or die("".odbc_errormsg());
                $id = odbc_result($result,"ID");

                $sql_view = sprintf("SELECT image,filetype FROM Database.dbo.Table WHERE id=%s;",$id);

                $result2=odbc_exec($connect,$sql_view) or die("".odbc_errormsg());
                $type = odbc_result($result2, "filetype");

                header("Content-type: $type");
                echo odbc_result($result2, "image");  

                odbc_close($connect);

2 个答案:

答案 0 :(得分:1)

我通过添加以下内容解决了这个问题(包括部分图像显示和关于包含错误的图像的错误):

ini_set("odbc.defaultlrl", "100K");
在我建立连接之前

。它会覆盖php.ini中设置的默认传输限制4096。

答案 1 :(得分:0)

会有内存限制问题, 这就是为什么图像内容没有完全加载。

设置你的php.ini

在您使用的php页面中尝试此代码,如display.php

ini_set('memory_limit','1024M');

ini_set(“mssql.textlimit”,“2147483647”);