我正在开发一个 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[]?
提前致谢。
我将很快启动一个项目,需要支持大型二进制文件.我想将Ruby on Rails用于webapp,但我关心的是BLOB支持.根据我使用其他语言,框架和数据库的经验,BLOB经常被忽略,因此具有差,难和/或错误的功能.
RoR是否充分支持BLOB?一旦你已经承诺使用Rails,是否有任何问题蔓延?
BTW:我想使用PostgreSQL和/或MySQL作为后端数据库.显然,底层数据库中的BLOB支持很重要.目前,我想避免专注于DB的BLOB功能; 我对Rails本身的反应更感兴趣.理想情况下,Rails应该隐藏数据库的详细信息,因此我应该可以从一个切换到另一个.如果不是这种情况(即:使用Rails与特定数据库存在一些问题),那么请提及它.
更新:另外,我不仅仅是在谈论ActiveRecord.我需要在HTTP端处理二进制文件(有效地上传文件).这意味着通过Rails访问适当的HTTP标头和流.我已更新问题标题和说明以反映这一点.
我正在尝试根据驻留在数据库中的信息创建PDF.知道我需要从Java检索作为BLOB存储在mysql数据库中的TIFF图像.我不知道该怎么做.我发现的示例显示了如何检索它并将其保存为文件(但在磁盘上),我需要驻留在内存中.
表名:IMAGENES_REGISTROS
BLOB字段名称:IMAGEN
有任何想法吗?
数据库中有一个名为blob的列类型,它用于存储二进制数据.
但通常情况下,我会看到压缩二进制数据,然后将二进制数据转换为base64,并将base64字符串存储为数据库中的varchar或text的解决方案.
Python代码示例:
import zlib, base64
base64_str = base64.b64encode(zlib.compress(binary_data, 9))
Run Code Online (Sandbox Code Playgroud)
因此有两种方法可以将二进制数据存储到数据库中:
我的问题是:哪种方式更好,为什么?
我正在尝试获取有关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) 基于这篇文章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中不再支持.
可以帮我?
对于我的客户端,我必须使用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
我想创建一个输入按钮"保存图像":
我已经找到了如何使用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
但是有人给我一些提示并帮助我吗?
我的问题非常类似于这个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打开,但内容不显示.谢谢
我正在努力将文件保存到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) blob ×10
angular ×2
base64 ×2
javascript ×2
.net ×1
angular5 ×1
azure ×1
binary ×1
bytearray ×1
c# ×1
database ×1
filesaver.js ×1
html2canvas ×1
html5 ×1
http ×1
image ×1
java ×1
jdbc ×1
mysql ×1
pdf ×1
sql ×1
sql-server ×1
symfony ×1
typescript ×1