2010-03-16 104 views
1

我想弄清楚在数据库中存储文件的方法。我知道建议将文件存储在文件系统而不是数据库上,但我正在处理的工作非常喜欢使用数据库来存储这些图像(文件)。在SQL Server 2008中传递二进制数据到存储过程

也有一些限制。我不是管理员用户,我必须让存储过程执行所有命令。到目前为止,这并没有太大的困难,但是我不能为我的生活建立一种方法来在数据库中存储文件(图像)。

当我尝试使用BULK命令时,出现错误消息:“您没有使用批量加载语句的权限”。大容量实用程序似乎是将文件上传到数据库的简单方法,但没有权限,我必须进行一次全面的工作。

我决定使用带有文件上传输入类型的HTML表单,并使用PHP进行处理。 PHP调用存储过程并传入文件的内容。问题是,现在它说的是参数的最大长度只能是128个字符。

现在我完全卡住了。我没有使用批量命令的权限,看起来我可以传递给SP的参数的最大长度为128个字符。

我希望碰到的问题,因为二进制字符和ASCII字符不一起拌匀,但我在一个死胡同......

感谢

+0

问题问了几次就已经SO ... – 2010-03-16 15:25:48

+0

我已经这个问题已经持续了几天,我已经四处寻找答案,甚至提出了另一个类似的问题。 – 2010-03-16 16:09:47

回答

0

Here is an example I've found在大卫·海登的博客。

这是C#示例,但步骤应该是在PHP类似:

  1. 将您上传的文件字节数组
  2. 服务器
+0

感谢您的示例。我正在开会讨论这个问题,因为现在我认为我没有正确的权限来实现它。 – 2010-03-16 17:59:25

+0

这个答案应该有更多的细节 - 链接的文章已经消失了。 – Paul 2016-06-30 14:39:36

1

总体上执行动态TSQL,我们不会在SQL中传递二进制数据。我们将文件上传到服务器,然后将服务器中的映像加载到数据库中。

加载图像到该文件中的数据库:

UPDATE images 
SET image = LOAD_FILE('images/myimage.jpg') 
WHERE image_id = 1234 

获取图像返回到一个文件:

SELECT image 
INTO DUMPFILE 'images/myimage.jpg' 
FROM images 
WHERE image_id = 1234 
相关问题