标签: blob

Angular 5 使用 blob 响应和 json 错误管理 http get

我正在开发一个 Angular 5 应用程序。我必须从我的后端应用程序下载一个文件,为此我只需调用如下函数:

public executeDownload(id: string): Observable<Blob> {
  return this.http.get(this.replaceUrl('app/download', denunciaId), {responseType: 'blob'}).map(result => {
    return result;
  });
}
Run Code Online (Sandbox Code Playgroud)

并调用我刚刚调用的下载服务:

public onDownload() {
  this.downloadService.executeDownload(this.id).subscribe(res => {
    saveAs(res, 'file.pdf');
  }, (error) => {
    console.log('TODO', error);
    // error.error is a Blob but i need to manage it as RemoteError[]
  });
}
Run Code Online (Sandbox Code Playgroud)

当后端应用程序处于特定状态时,它不会返回 Blob,而是返回一个HttpErrorResponse在其error字段中包含RemoteError 数组的对象。RemoteError 是我编写的用于管理远程错误的接口。

在 catch 函数中,error.error 是一个 Blob。如何将 Blob 属性转换为RemoteError[]?

提前致谢。

blob http typescript angular angular5

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

Rails二进制流支持

我将很快启动一个项目,需要支持大型二进制文件.我想将Ruby on Rails用于webapp,但我关心的是BLOB支持.根据我使用其他语言,框架和数据库的经验,BLOB经常被忽略,因此具有差,难和/或错误的功能.

RoR是否充分支持BLOB?一旦你已经承诺使用Rails,是否有任何问题蔓延?

BTW:我想使用PostgreSQL和/或MySQL作为后端数据库.显然,底层数据库中的BLOB支持很重要.目前,我想避免专注于DB的BLOB功能; 我对Rails本身的反应更感兴趣.理想情况下,Rails应该隐藏数据库的详细信息,因此我应该可以从一个切换到另一个.如果不是这种情况(即:使用Rails与特定数据库存在一些问题),那么请提及它.

更新:另外,我不仅仅是在谈论ActiveRecord.我需要在HTTP端处理二进制文件(有效地上传文件).这意味着通过Rails访问适当的HTTP标头和流.我已更新问题标题和说明以反映这一点.

blob ruby-on-rails

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

检索在MYSQL DB上存储为BLOB的映像

我正在尝试根据驻留在数据库中的信息创建PDF.知道我需要从Java检索作为BLOB存储在mysql数据库中的TIFF图像.我不知道该怎么做.我发现的示例显示了如何检索它并将其保存为文件(但在磁盘上),我需要驻留在内存中.

表名:IMAGENES_REGISTROS

BLOB字段名称:IMAGEN

有任何想法吗?

java mysql blob image jdbc

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

数据库中的二进制数据,blob vs压缩的base64

数据库中有一个名为blob的列类型,它用于存储二进制数据.

但通常情况下,我会看到压缩二进制数据,然后将二进制数据转换为base64,并将base64字符串存储为数据库中的varchar或text的解决方案.

Python代码示例:

import zlib, base64
base64_str = base64.b64encode(zlib.compress(binary_data, 9))
Run Code Online (Sandbox Code Playgroud)

因此有两种方法可以将二进制数据存储到数据库中:

  1. 作为blob
  2. 作为压缩base64

我的问题是:哪种方式更好,为什么?

database binary base64 blob

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

使用GetBlobReference()时未初始化Azure存储CloudBlob.Properties

我正在尝试获取有关Azure blob的一些信息(上次修改的UTC日期时间).此信息存储在CloudBlob.Properties.LastModifiedUtc属性中.

如果我使用方法GetBlobReference()或GetBlockBlobReference(),则不初始化blob的属性(LastModifiedUtc是DateTime.MinDate).如果我使用ListBlobs(),则属性被正确初始化(LastModifiedUtc具有正确的值).

使用GetBlobReference函数时我做错了吗?有没有办法如何为一个特定的blob获取CloudBlob实例?我知道我可以错过ListBlobs()并过滤我感兴趣的blob,或者使用CloudBlobClient类中的ListBlobsWithPrefix(),但是当我要求特定的Blob Reference时,我希望获得所有元数据.

显示我如何使用Azure blob的代码:

    string storageAccountName = "test";
    string storageAccountKey = @"testkey";
    string blobUrl = "https://test.blob.core.windows.net";
    string containerName = "testcontainer";
    string blobName = "testbontainer";

    var credentials = new StorageCredentialsAccountAndKey(storageAccountName, storageAccountKey);
    var cloudBlobClient = new CloudBlobClient(blobUrl, credentials);
    var containerReference = cloudBlobClient.GetContainerReference(string.Format("{0}/{1}", blobUrl, containerName));

    // OK - Result is of type CloudBlockBlob, cloudBlob_ListBlobs.Properties.LastModifiedUtc > DateTime.MinValue
    var cloudBlob_ListBlobs = containerReference.ListBlobs().Where(i => i is CloudBlob && ((CloudBlob)i).Name == blobName).FirstOrDefault() as CloudBlob;

    // WRONG - Result is of type CloudBlob, cloudBlob_GetBlobReference.Properties.LastModifiedUtc == …
Run Code Online (Sandbox Code Playgroud)

blob azure azure-storage-blobs

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

HTML 5的BlobBuilder()是否仍可在Google Chrome中使用?

基于这篇文章http://cloudevils.wordpress.com/2012/10/18/ajax-file-upload-without-post-using-html5/我创建了一个表单来上传文件.最初在chrome中运行良好,但现在不再有用了.在FF工作正常.我做了一些调试和这一行

var bb = new (window.MozBlobBuilder || window.WebKitBlobBuilder || window.BlobBuilder)();
Run Code Online (Sandbox Code Playgroud)

似乎停止使用chrome.浏览我发现一些关于BlobBuilder()函数的信息在chrome中不再支持.

可以帮我?

javascript html5 google-chrome blob

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

Symfony2:如何显示/下载BLOB字段

对于我的客户端,我必须使用blob存储来处理各种文件.

所以我创建了一个带有Blob类的独立包,扩展了Doctrine\DBAL\Types\Type.并在bundle类中使用引导函数.

我可以在数据库Blob数据中写入非常好.

但我无法下载任何文件后:/

我有:

public function downloadAction($id) {
    $em = $this->getDoctrine()->getManager();

    /* @var $entity Document */
    $entity = $em->getRepository('Lille3SapBundle:Document')->find($id);

    if (!$entity) {
        throw $this->createNotFoundException('Unable to find Document entity.');
    }

    $file = $entity->getFichier();

    $response = new \Symfony\Component\HttpFoundation\Response($file, 200, array(
        'Content-Type' => 'application/octet-stream',
        'Content-Length' => sizeof($file),
        'Content-Disposition' => 'attachment; filename="'.$entity->getNomDocument().'"',
    ));

    return $response;
}
Run Code Online (Sandbox Code Playgroud)

我有一个例外:响应内容必须是一个字符串或对象,实现__toString(),给定"资源".

实际上,$ file值不是预期的BLOB,而是类似于资源ID#123

- >我检查了blob数据字段值,它们在数据库中没问题

那么我如何强制控制器中的blob行而不是资源ID#111

blob symfony

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

生成div的图像并另存为

我想创建一个输入按钮"保存图像":

  1. 拍摄一个div的屏幕截图
  2. 要求在用户的计算机上"另存为"

我已经找到了如何使用html2canvas创建潜水屏幕并在新标签中打开它,它完美地运行:

function printDiv2(div)
{
    html2canvas((div), {
        onrendered: function(canvas) {
            var img = canvas.toDataURL();
            window.open(img);
      }
    });
}
Run Code Online (Sandbox Code Playgroud)

但是对于你来说,保存为一部分,是一种困难的部分...我发现了有趣的话题,因为我是JS(和对象)编码的新手,我有点困惑......我想我将不得不使用FileSaver.js并创建一个新的blob http://eligrey.com/blog/post/saving-generated-files-on-the-client-side/

但我不知道如何在我的html2canvas中实现saveAs,如何正确地投射新的blob ...

function printDiv2(div)
{
    html2canvas((div), {
        onrendered: function(canvas) {
            var img = canvas.toDataURL();
            window.open(img);

            var blob = new Blob(img, {type: "image/jpeg"});
            var filesaver = saveAs(blob, "my image.png");
      }
    });
}
Run Code Online (Sandbox Code Playgroud)

此外,我尝试通过提取base64生成的URL来做一些事情,但是对于我来说理解每一个东西都太复杂了:http: //bl.ocks.org/nolanlawson/0eac306e4dac2114c752

但是有人给我一些提示并帮助我吗?

javascript base64 blob html2canvas filesaver.js

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

PDF Blob没有显示内容,Angular 2

我的问题非常类似于这个PDF Blob - 弹出窗口没有显示内容,但我使用的是Angular 2.问题的回答是将responseType设置为arrayBuffer,但它在Angular 2中不起作用,错误是reponseType没有存在于RequestOptionsArgs类型中.我也尝试通过BrowserXhr扩展它,但仍然不起作用(https://github.com/angular/http/issues/83).

我的代码是:

createPDF(customerServiceId: string) {
   console.log("Sending GET on " + this.getPDFUrl + "/" + customerServiceId);

   this._http.get(this.getPDFUrl + '/' + customerServiceId).subscribe(
       (data) => {
            this.handleResponse(data);
         });
}
Run Code Online (Sandbox Code Playgroud)

而handleResponse方法:

handleResponse(data: any) {
     console.log("[Receipt service] GET PDF byte array " + JSON.stringify(data));

     var file = new Blob([data._body], { type: 'application/pdf' });            
     var fileURL = URL.createObjectURL(file);
     window.open(fileURL);
 }
Run Code Online (Sandbox Code Playgroud)

我也尝试从FileSaver.js中保存方法,但是同样的问题,pdf打开,但内容不显示.谢谢

pdf blob bytearray angular

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

从数据库中读取SQL Varbinary Blob

我正在努力将文件保存到sql blob到varbinary(max)列,并且现在有了保存方面的工作(我相信).

我无法弄清楚如何读取数据,因为我正在使用存储过程检索我的数据库值我应该能够访问列数据,如ds.Tables [0] .Rows [0] [ "blobData"]; 所以我有必要像我在下面的例子中看到的那样有一个SQLCommand等:

private void OpenFile(string selectedValue)
{
    String connStr = "...connStr";
    fileName = ddlFiles.GetItemText(ddlFiles.SelectedItem);

    using (SqlConnection conn = new SqlConnection(connStr))
    {
        conn.Open();
        using (SqlCommand cmd = conn.CreateCommand())
        {
            cmd.CommandText = "SELECT BLOBData FROM BLOBTest WHERE testid = " + selectedValue;

            using (SqlDataReader dr = cmd.ExecuteReader())
            {
                while (dr.Read())
                {
                    int size = 1024 * 1024;
                    byte[] buffer = new byte[size];
                    int readBytes = 0;
                    int index = 0;

                    using (FileStream fs = new …
Run Code Online (Sandbox Code Playgroud)

.net c# sql sql-server blob

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