标签: blob

在SQLAlchemy中使用BLOB的示例

有没有人举例说明如何在SQLAlchemy中使用BLOB?

问候,史蒂夫

blob sqlalchemy

20
推荐指数
3
解决办法
2万
查看次数

Postgresql,JDBC和流式BLOB

我试图使用jdbc驱动程序从postgres数据库中检索blob.内存太大,所以我想将其作为下载流式传输.我尝试在ResultSet上使用getBinaryStream方法,但事实证明这个方法实际上将它全部读入内存,因此不适用于大文件.

显然,可以在结果集上使用getBlob方法,并且可以从blob中获取输入流并从那里开始,但这就是我遇到问题的地方.

PreparedStatement ps = con.prepareStatement("select data from file_data WHERE ID = ?");
ps.setLong(1,file.fileData.id)
ResultSet rs = ps.executeQuery()
if(rs.next()){
        rs.getBlob("data")
Run Code Online (Sandbox Code Playgroud)

那是我正在运行的代码.当它到达最后一行时,它会抛出一个我无法理解的错误......

org.postgresql.util.PSQLException:long类型的错误值:xxxxxx

"xxxxxx"然后是文件的内容.你可以想象这会很长,但不是真的.

我被困在这里 有没有人对正在发生的事情有任何想法?哎呀我甚至会采用其他方法来流式传输大blob作为下载.

java postgresql blob jdbc

20
推荐指数
2
解决办法
2万
查看次数

在MySQL中的BLOB列中搜索值

如何在MySQL中的Blob列中搜索某些值?这可能吗?

php mysql search blob

20
推荐指数
1
解决办法
2万
查看次数

使用BLOB VS OS文件系统的MySQL二进制存储:大文件,大批量,大问题

我正在运行的版本(基本上是最新的):
PHP:5.3.1
MySQL:5.1.41
Apache:2.2.14
OS:CentOS(最新)

情况就是这样.

我有数千个非常重要的文件,从客户合同到语音签名(合同的客户授权记录),文件类型包括但不限于jpg,gif,png,tiff,doc,docx,xl​​s,wav,mp3 ,pdf等

所有这些文档目前都存储在多个服务器上,包括Windows 32位,CentOS和Mac等.有些文件也存储在员工台式计算机和笔记本电脑上,有些文件仍然是存储在数百个盒子和文件柜中的硬拷贝.

现在因为客户或律师可以随时要求合同证明,我公司必须能够有效地搜索和找到正确的文件,因此所有这些文件都必须数字化(如果还没有)并且相关进入某种搜索和访问的顺序.

作为程序员,我创建了一个完整的客户关系管理工具,供整个公司使用.这包括客户资料管理,订单和工作跟踪工具,工作/销售创建和管理模块等,以及目前客户资料级别(驾驶执照,信用授权等)或工作中所需的任何文件/销售级别(合同,语音签名等)可以上传到服务器并位于父/子层次结构中,就像Windows资源管理器或任何其他典型的文件管理模型一样.

结构如下:

drivers_license
| - DL_123.jpg
voice_signatures
| - VS_123.wav
| - VS_4567.wav
合同

因此,文件使用PHP和Apache进行上传,并存储在操作系统的文件系统中.在上载时,关于文件的某些信息存储在MySQL数据库中.存储的一些信息是:

表:FileUploads
FileID
CustomerID(文件所属的客户ID,它们都有此.)
JobID/SaleID(相关作业/销售的ID,如果有)
.FileSize
FileType
UploadedDateTime
UploadedBy
FilePath(文件的目录路径是存储在.)
FileName(上传文件的当前文件名,CustomerID和JobID/SaleID的组合,如果适用.)
FileDescription
OriginalFileName(上载时源文件的原始名称,包括扩展名.)

如您所见,文件通过文件名链接到数据库.当我想提供客户的文件下载给用户时,我所要做的就是"SELECT*FROM FileUploads WHERE CustomerID = 123 OR JobID = 2345;" 这将输出我需要的所有文件详细信息,并且使用FilePath和FileName,我可以提供下载链接.

http ... server/FilePath/FileName

这种方法存在许多问题:

  1. 在"数据库无意识"环境中存储文件意味着不保留数据完整性.如果删除了记录,则也可能不会删除该文件,反之亦然.
  2. 文件遍布整个地方,不同的服务器,计算机等.
  3. 文件名是唯一匹配二进制文件到数据库和客户配置文件和客户记录的东西.

有很多原因,其中一些在这里描述:http://www.dreamwerx.net/site/article01.此外,这里也有一篇有趣的文章:sietch.net/ViewNewsItem.aspx?NewsItemID=124.

因此,经过大量研究后,我几乎已经决定将所有这些文件存储在数据库中,如BLOB或LONGBLOB,但在我这样做之前还有很多注意事项.

我知道将它们存储在数据库中是一个可行的选择,但是有许多方法可以存储它们.我也知道存放它们是一回事; 以可管理的方式关联和访问它们完全是另一回事.

此链接提供的文章:dreamwerx.net/site/article01描述了一种将上传的二进制文件拆分为64kb块并使用FileID存储每个块,然后使用标头将实际二进制文件流式传输到客户端的方法.这是一个非常酷的主意,因为它减轻了对服务器内存的预感; 而不是将整个100mb文件加载到RAM然后将其发送到客户端,它一次只做64kb.我已经尝试了这个(并更新了他的脚本),这在一个非常小的测试框架中是完全成功的.

因此,如果您同意这种方法是一个可行的,稳定的和强大的长期选项来存储适度大的文件(1kb到几百megs),以及大量的这些文件,请告诉我您有哪些其他注意事项或想法.

此外,我正在考虑获取当前的"文件管理"PHP脚本,该脚本提供了一个界面,用于管理存储在文件系统中的文件,并将其转换为管理存储在数据库中的文件.如果已经有任何软件可以做到这一点,请告诉我.

我想我可以提出很多问题,并且所有信息都在那里^^所以请讨论这方面的所有方面,我们可以来回传递想法并相互教授.

干杯,

Quantico773

php mysql streaming blob http-headers

20
推荐指数
1
解决办法
2万
查看次数

Android SQLiteDatabase中的游标大小限制

我从互联网下载数据库.我将它保存在我的datases文件夹中,然后打开它.在数据库内部有一个包含6个字段的"广告"表.其中2个字段是BLOB.当我想从这个表中读取...我有一些问题...我注意到当我读取一个blob字段大于1兆字节的行时,这会导致异常..."从行获取字段槽0 col 0失败".如果它有点blob,一切都还可以......在此先感谢:)

size android blob cursor limit

20
推荐指数
3
解决办法
2万
查看次数

Android:光标窗口已满

W/CursorWindow(15677):窗口已满:请求分配2195889字节,可用空间2096720字节,窗口大小2097152字节

我知道有app内存可用:

D/dalvikvm(15677):GC_FOR_ALLOC释放9K,30%免费17050K/24291K,暂停45ms

因此,它纯粹是做光标大小的窗口,阅读时blob进入byte[].

我使用内置方法从游标中读取blob.

    try
    {
        c = rdb.query("Photos", new String[]{"photo"}, "id = ?", new String[]{""+photoID}, null, null, null);
        if(c.moveToFirst())
        {
            byte[] tArray = c.getBlob(c.getColumnIndex("photo")); // THIS LINE ERRORS
        }               
    }catch(Exception e)
    {
        e.printStackTrace();
    }
    c.close();

    return tArray;
Run Code Online (Sandbox Code Playgroud)

有没有解决的办法?窗口大小似乎限制为2097152字节.

memory sqlite android blob

20
推荐指数
1
解决办法
1万
查看次数

Html5的文件API - BLOB使用?

我有一个文件输入: (jsbin)

 <input type="file"   accept="image/*" id="input" multiple   onchange='handleFiles(this)' />
Run Code Online (Sandbox Code Playgroud)

选择文件时,显示所选图像的小图像:

我可以用两种方式做到:

使用FileReader:

function handleFiles(t) //t=this
{
    var fileList = t.files;
    for (var i = 0; i < fileList.length; i++)
    {
        var file = fileList[i];
        var img = document.createElement("img");
        img.style... = ...
        document.getElementById('body').appendChild(img);
        var reader = new FileReader();
        reader.onload = (function (aImg)
        {
            return function (e)
            {
                aImg.src = e.target.result;
            };
        })(img);
        reader.readAsDataURL(file);
    }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

使用ObjectURL/BLOB:

 function handleFiles(t)
 {
     var fileList = t.files;
     for (var …
Run Code Online (Sandbox Code Playgroud)

javascript html5 blob fileapi

20
推荐指数
2
解决办法
3万
查看次数

保存图像:文件还是blob?

当你保存你的图像时(你有很多这样的图像)你会在数据库中存储为blob,还是作为文件存储?为什么?

重复:在DB中存储图像 - 是或不是?

database performance blob image

19
推荐指数
4
解决办法
4万
查看次数

直接通过mySQL命令行上传图像

我在mySQL中有一个表,它有一个名为"image"的字段,数据类型为"BLOB".我想知道是否可以直接从命令行客户端上传该字段中的图像,而不是通过php进行...如果有可能,那么我应该在哪里放置我的图像文件?

mysql database blob mysql-loadfile

19
推荐指数
3
解决办法
4万
查看次数

如何告知websocket onmessage参数的类型?

这里https://developer.mozilla.org/en/WebSockets/WebSockets_reference/MessageEvent它指出属性数据类型为DOMString | Blob | ArrayBuffer.我怎么告诉它我想要哪种类型?或者我怎么知道我得到的是哪种类型?

javascript blob websocket arraybuffer

19
推荐指数
1
解决办法
2万
查看次数