我有一个奇怪的问题,下面的函数是我创建的基于我在网上发现的关于在客户端动态创建一个Blob的一个二进制数据(作为数组传递)并能够下载它.这在Chrome中非常出色,但在Firefox中没有做任何事情 - 除非我调试并逐步完成代码.是的,奇怪的是,如果我在函数内创建一个断点并逐步执行它,a.click()将调出下载窗口!
function downloadFile(filename, data) {
var a = document.createElement('a');
a.style = "display: none";
var blob = new Blob(data, {type: "application/octet-stream"});
var url = window.URL.createObjectURL(blob);
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}
Run Code Online (Sandbox Code Playgroud)
谁能帮我?这是使用Firefox 38.0.5测试的.
byte[]我的实体中有一些字段,例如:
@Entity
public class ServicePicture implements Serializable {
private static final long serialVersionUID = 2877629751219730559L;
// seam-gen attributes (you should probably edit these)
@Id
@GeneratedValue
private Long id;
private String description;
@Lob
@Basic(fetch = FetchType.LAZY)
private byte[] picture;
Run Code Online (Sandbox Code Playgroud)
在我的数据库架构上,字段设置为,BLOB所以这应该没问题.无论如何:每当我尝试插入图片或pdf时 - 没有什么比1mb这更大,我只接受这个
16:52:27,327 WARN [JDBCExceptionReporter] SQL Error: 0, SQLState: 22001
16:52:27,327 ERROR [JDBCExceptionReporter] Data truncation: Data too long for column 'picture' at row 1
16:52:27,328 ERROR [STDERR] javax.persistence.PersistenceException: org.hibernate.exception.DataException: could not insert: [de.ac.dmg.productfinder.entity.ServicePicture]
16:52:27,328 ERROR [STDERR] …Run Code Online (Sandbox Code Playgroud) 我正在从数据库中检索Blob图像,我希望能够使用JavaScript查看该图像.以下代码在页面上生成一个损坏的图像图标:
var image = document.createElement('image');
image.src = 'data:image/bmp;base64,'+Base64.encode(blob);
document.body.appendChild(image);
Run Code Online (Sandbox Code Playgroud)
我的文件管理系统的要求是:
我决定将所有文档(和扫描图像)作为blob存储在数据库中,到目前为止,我的经验非常棒,文档检索也非常快 - 它符合上述所有标准,甚至还有一些额外的优点,例如,将文档与其相关的实体一起自动存储,轻松快速地搜索内容,删除各种用户活动,包括打开和命名文档等.
我的问题是 - 这个设计和实施中是否存在任何我忽略的严重风险或事物?
编辑注意:DB是PostgreSQL,非常好地处理BLOBS并且非常好地扩展.环境是多用户.
如何轻松地将blob插入varbinary(MAX)字段?
为了论证:
假设我要插入的东西是:c:\ picture.png表是mytable,列是mypictureblob,地方是recid = 1
我一直在谷歌搜索一段时间,我找不到一个简单的解决方案
谢谢!
我在设置字符串的类型时遇到了问题
public void setTextDesc(String textDesc) {
this.textDesc = textDesc;
}
@Column(name="DESC")
@Lob
public String getTextDesc() {
return textDesc;
}
Run Code Online (Sandbox Code Playgroud)
它没有用,我检查了mysql架构,它仍然是varchar(255),我也尝试过,
@Column(name="DESC", length="9000")
Run Code Online (Sandbox Code Playgroud)
要么
@Column(name="DESC")
@Type(type="text")
Run Code Online (Sandbox Code Playgroud)
我正在努力使类型成为TEXT,任何想法都将受到赞赏!
我打算json_encoded在我的数据库上存储一个字符串.我不能准确地说出它的长度,但我很确定它会很长.我担心的是哪种场类型,我要使用这个,是不是blob还是text?
我更喜欢能够在快速搜索中尽可能节省空间的那个,在任何情况下我都有其他列我应该索引.
我正在尝试实施Git来管理创意资产(Photoshop,Illustrator,Maya等),我想根据文件大小而不是扩展名,位置等从Git中排除文件.
例如,我不想排除所有.avi文件,但在随机目录中有一些大量的+ 1GB avi文件,我不想提交.
有什么建议?
我们的Azure blob存储证书今天已过期.这不是我们提供的证书,而是Microsoft提供的证书,如下图所示.如何解决这个问题呢?我试过寻找解决方案,但一无所获.我们的应用程序无法连接到存储,因为证书已过期,我们收到错误消息,指出:无法建立SSL/TLS安全通道的信任关系

我在我的Angular.js控制器中有下载CSV文件:
var blob = new Blob([csvContent.join('')], { type: 'text/csv;charset=utf-8'});
var link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
link.href = URL.createObjectURL(blob);
link.download = 'teams.csv';
link.click();
Run Code Online (Sandbox Code Playgroud)
这适用于Chrome,但不适用于IE.浏览器控制台日志说:
HTML7007:通过关闭为其创建的blob来撤消一个或多个blob URL.这些URL将不再解析,因为已释放支持URL的数据.
它是什么意思,我该如何解决?
blob ×10
javascript ×3
hibernate ×2
angularjs ×1
annotations ×1
azure ×1
base64 ×1
blobstorage ×1
document ×1
download ×1
firefox ×1
git ×1
gitignore ×1
image ×1
java ×1
jpa ×1
large-files ×1
mysql ×1
mysql-json ×1
performance ×1
security ×1
sql ×1
sql-server ×1
text ×1