1

我正在尝试找出一种将文件存储在数据库中的方法。我知道建议将文件存储在文件系统而不是数据库上,但我正在从事的工作更喜欢使用数据库来存储这些图像(文件)。

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

当我尝试使用 BULK 命令时,我收到一条错误消息,提示“您没有使用批量加载语句的权限”。批量实用程序似乎是将文件上传到数据库的简单方法,但如果没有权限,我必须想办法解决问题。

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

现在我完全被困住了。我没有使用批量命令的权限,而且我可以传递给 SP 的参数的最大长度似乎是 128 个字符。

我预计会遇到问题,因为二进制字符和 ascii 字符不能很好地混合在一起,但我处于死胡同......

谢谢

4

2 回答 2

1

通常,我们不会在 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
于 2010-03-17T22:47:37.520 回答
0

这是我在 David Hayden 的博客中找到的一个示例。

这是 ac# 示例,但 PHP 中的步骤应该类似:

  1. 将您上传的文件转换为字节数组
  2. 在服务器上执行动态 TSQL
于 2010-03-16T16:55:02.957 回答