标签: blob

使用C#从数据库中读取图像?

我有这个问题:

SELECT PICTURE FROM LOGO WHERE LOGONO = ?
Run Code Online (Sandbox Code Playgroud)

("PICTURE"是SQL Server中的Image列)

而这段代码用于读取数据:

using (DbDataReader reader = command.ExecuteReader())
{
    if (reader.HasRows)
    {
        if (!reader.IsDBNull(0))
        {
            byte[] buffer = new byte[8000];
            while (reader.GetBytes(0, 0, buffer, 0, 8000) > 0)
                picture.AddRange(buffer);
        }
     }
}
Run Code Online (Sandbox Code Playgroud)

问题是当列包含null时,始终会在reader.IsDBNull(0)语句上抛出InvalidOperationException("行/列不存在数据").

MSDN说:

在调用类型化的get方法(例如,GetByte,GetChar等)之前调用此方法以查看是否存在空列值,以避免引发错误.

如何在不触发异常的情况下检查列是否包含null?我是以错误的方式解决这个问题吗?

c# blob image

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

在MVC2中显示图像blob

我正在尝试(没有成功)从服务中获取blob图像并将其显示为html中的图像.

我的HTML是:

<img src="<%: Url.Action("GetPersonImage", new { pid = Model.PersonId }) %>" alt="" />
Run Code Online (Sandbox Code Playgroud)

女巫在Sourceas中表现出来

<img src="/demo4/ABook/GetPersonImage/?pid=210092" alt="">
Run Code Online (Sandbox Code Playgroud)

我的行动是:

    public void GetPersonImage(int pid)
    {
        string src = so.GetPersonImage(pid);
        byte[] bytes = System.Text.Encoding.UTF8.GetBytes(src);

        Response.Clear();
        Response.AddHeader("Content-Length", src.Length.ToString());
        Response.ContentType = "image/gif";
        Response.BufferOutput = false;
        Response.BinaryWrite(bytes);
        Response.End();
    }
Run Code Online (Sandbox Code Playgroud)

如果我访问,这在页面中没有显示任何内容

http://localhost:60556/demo4/ABook/GetPersonImage/?pid=210092

我甚至尝试过 FileStreamResult

    public FileStreamResult GetPersonImage(int pid)
    {
        string src = so.GetPersonImage(pid);

        Response.Clear();
        Response.Expires = 0;
        Response.AddHeader("Content-Length", src.Length.ToString());
        Response.BufferOutput = false;

        return new FileStreamResult(
                        new System.IO.MemoryStream(
                            System.Text.Encoding.UTF8.GetBytes(src)), "image/gif");
    }
Run Code Online (Sandbox Code Playgroud)

仍然没有:(

src变量包含 …

c# asp.net-mvc blob asp.net-mvc-2

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

PHP:从MySQL Blob直接将图像检索到<img>标签中

我已将我的图像存储到(中)BLOB字段中,并希望检索它们嵌入在我生成的PHP页面中.

当我测试使用时检索存储的图像

header('Content-type: ' . $image['mime_type']);
echo $image['file_data'];
Run Code Online (Sandbox Code Playgroud)

一切看起来都很好.

但是,我还没有找到一种方法将图像干净地检索到文档的中间.例如,使用

$image  = $row['file_data'];
echo '<img src="data:image/jpeg;base64,'.$image['file_data'].'" alt="photo"><br>';
Run Code Online (Sandbox Code Playgroud)

...要么...

$im = imageCreateFromString($image);
Run Code Online (Sandbox Code Playgroud)

我只是在屏幕上看到一堆十六进制垃圾.

我使用以下方式直接存储图像:

ob_start();
imagejpeg($resizedImage, null, 100);
$content = ob_get_contents();
ob_end_clean();
$sql = sprintf(
 "insert into images (filename, mime_type, file_size, file_data, event_id)
 values ('%s', '%s', %d, '%s',%d)",
 mysql_real_escape_string($fileName),
 mysql_real_escape_string($mimeType),
 $imageSize,
 mysql_real_escape_string($content),
 $eventID 
);
$result = $cn->query($sql);
Run Code Online (Sandbox Code Playgroud)

有没有人请有一个工作代码片段来成功显示PHP输出中存储的.jpg mid文件?

php mysql blob image

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

将图像存储在数据库中与存储在文件系统中

我正在一个在线购物网站上工作,它也会有产品图片.如果我应该存储图像,我会感到困惑.如果我将这些图像存储在数据库中,则必须将url保存到数据库中,如果我以blob格式存储图像,我必须在使用php之前对其进行解码.谁能告诉哪一个会更好?

php database blob image

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

尝试使用hibernate持久保存blob时出现MySQLSyntaxErrorException

我正在使用Spring MVC,Hibernate4和MySQL5创建一些简单的网页.我使用的模型之一包含BLOB值(byte []).当我尝试坚持该模型时,entityManager.persist() 我得到了MySQLSytnaxException.实际上当前配置存在更多问题,例如persist/merge/remove忽略@Transactional注释,但这个问题是最关键的.

我已经尝试过使用session.save(object);或替换Blob的byte [].结果仍然相同.我发现的所有工作示例都使用完全不同的方法 - 例如,他们使用HibernateSessionManager和HibernateTransactionManager而不是JPA - 我想找到解决方案,不需要完全改变我如何持久化实体,当我还不确定它时有助于.

你能告诉我在代码/配置/假设方面犯了什么错误吗?

与Hibernate跟踪一起开始堆栈跟踪:

Hibernate: 
        insert 
        into
            updates
            (changelog, added, developmentVersion, filedata, filedataType, major, minor, nightly, release, package, type, uploader, id) 
        values
            (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
22:53:10,888 TRACE BasicBinder:83 - binding parameter [1] as [VARCHAR] - sdfsd
22:53:10,891 TRACE BasicBinder:71 - binding parameter [2] as [DATE] - <null>
22:53:10,894 TRACE BasicBinder:83 - binding parameter [3] as [BOOLEAN] - false
22:53:10,898 …
Run Code Online (Sandbox Code Playgroud)

mysql hibernate jpa blob spring-mvc

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

使用blob列在Oracle上准备测试数据

最近,我需要针对oracle 10g做一些性能测试,这种情况是我需要准备尽可能多的具有blob列的记录,并且blob列必须至少包含10kbs的数据。

如何自动生成测试数据?说10,000条记录?

oracle blob

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

为什么压缩的Blob值不会更改sqlite数据库的大小?

我有一个.sqlite 数据库

$db = new PDO("sqlite:db.sqlite");
Run Code Online (Sandbox Code Playgroud)

它的大小是60MB。它有1张桌子。该表列中的一列(唯一的重列)保存BLOB_TEXT数据。我正在尝试压缩此列值

$pdo = $db->query("SELECT id, house_plan FROM houses");
$houses = $pdo->fetchAll(PDO::FETCH_ASSOC);
$initial_length = 0;
$compressed_length= 0;

for ($i = 0; $i < count($houses); $i++) {
  $id = $houses[$i]["id"];
  $house_plan = $houses[$i]["house_plan"];
  $compressed = gzcompress($house_plan);

  $initial_length += strlen($house_plan);
  $compressed_length += strlen($compressed);
  flush();

  $query = $db->prepare("UPDATE houses SET house_plan=? WHERE id=" . $id);
  $query->bindParam(1, $compressed, PDO::PARAM_LOB);
  $query->execute();
}
Run Code Online (Sandbox Code Playgroud)

然后打印汇总的初始BLOB_TEXT数据长度和压缩数据长度(替换了表中的初始数据):

echo "Before: " . $initial_length . ", …
Run Code Online (Sandbox Code Playgroud)

php compression sqlite blob

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

将二进制数据从Nodejs缓冲区写入Meteor客户端上的blob

我正在尝试创建一个CSV文件,该文件将在服务器上以UTF-16LE编码保存,然后将结果传递给客户端.这就是我在Coffeescript中做的事情:

Meteor.methods {
    iconv: (data, from="UTF-8", to="UTF-16LE") ->
        Iconv = Meteor.require('iconv').Iconv
        iconv = new Iconv(from, to)
        res = iconv.convert(data) 
        res
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我用服务器从服务器写入文件

fs.writeFileSync('/tmp/test.csv', res)
Run Code Online (Sandbox Code Playgroud)

文件正确生成.但是,我想避免在服务器上创建文件并将其直接保存在客户端上(使用filesaver库).示例客户端代码如下所示:

exportToCsv = (data="tête", filename) ->
    callback = (err, res) ->
        blob = new Blob([res], {type:'text/csv;charset=UTF-16LE'})
        saveAs(blob, filename)
    Meteor.call('iconv', data, callback)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在测试的数据是一个带有特殊字符的简单字符串('ê').我的问题是我无法将nodejs缓冲区传递给客户端.它会自动序列化为:

Object {0: 116, 1: 0, 2: 234, 3: 0, 4: 116, 5: 0, 6: 101, 7: 0}
Run Code Online (Sandbox Code Playgroud)

而不是我在服务器上获得的缓冲区输出:

<Buffer 74 00 ea 00 74 00 65 00>
Run Code Online (Sandbox Code Playgroud)

问题不在于从十六进制到十进制的转换,我知道我可以使用某些东西转换回十六进制Number(116).toString(16).但是如何在blob中将此数据写为二进制?

javascript blob binary-data node.js meteor

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

是否可以将Sqlite Blob列转换为十六进制字符串(GUID)?

我有一个SQLite带有列的表,其中存储GUID一个字节数组

我试图从我的SQL查询中获取Guid字符串。到目前为止,我已经尝试过:

Select BlobGuidColumn from [MyTable]

但这返回一blob

是否可以Hex从SQL查询返回字符串?

sql sqlite guid blob

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

来自Web URL的Blob文件

我正在用GeneXus开发一个应用程序.我需要操作特定Web URL中存在的pdf文件.
如何从此URL读取文件并将其存储在blob对象中?

blob genexus

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