我一直在尝试显示pdf文件,我从$http.post响应中获取blob .例如,pdf必须在应用程序中显示<embed src>.
我遇到了几个堆栈帖子,但不知怎的,我的例子似乎不起作用.
JS:
根据这份文件,我继续尝试......
$http.post('/postUrlHere',{myParams}).success(function (response) {
var file = new Blob([response], {type: 'application/pdf'});
var fileURL = URL.createObjectURL(file);
$scope.content = fileURL;
});
Run Code Online (Sandbox Code Playgroud)
根据我的理解,fileURL创建一个临时URL,博客可以将其用作参考.
HTML:
<embed src="{{content}}" width="200" height="200"></embed>
Run Code Online (Sandbox Code Playgroud)
我不知道如何在Angular中处理这个问题,理想的情况是(1)将它分配给范围,(2) '准备/重建'blob到pdf (3)将其传递给HTML使用<embed>因为我想要在应用程序中显示它.
我已经研究了一天以上但不知何故我似乎无法理解它在Angular中是如何工作的......让我们假设那里的pdf查看器库没有选项.
我正在尝试使用一些字节数组数据动态创建一个zip流,并通过我的MVC动作下载.
但是,在Windows中打开时,下载的文件总是会出现以下损坏的错误.
当我尝试从7z提取时出现此错误
但请注意,从7z中提取的文件未损坏.
我正在使用ZipArchive,以下是我的代码.
private byte[] GetZippedPods(IEnumerable<POD> pods, long consignmentID)
{
using (var zipStream = new MemoryStream())
{
//Create an archive and store the stream in memory.
using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Create, true))
{
int index = 1;
foreach (var pod in pods)
{
var zipEntry = zipArchive.CreateEntry($"POD{consignmentID}{index++}.png", CompressionLevel.NoCompression);
using (var originalFileStream = new MemoryStream(pod.ByteData))
{
using (var zipEntryStream = zipEntry.Open())
{
originalFileStream.CopyTo(zipEntryStream);
}
}
}
return zipStream.ToArray();
}
}
}
public ActionResult DownloadPOD(long consignmentID) …Run Code Online (Sandbox Code Playgroud) 在有人说"复制"之前,我只是想确保,人们知道,我已经审查了这些问题:
1)使用angular和php,不知道这里发生了什么(我不知道PHP):下载zip文件并从angular方法触发"保存文件"对话框
2)无法得到任何答案:如何使用angular下载zip文件
3)这个人已经可以下载,这是我想要弄清楚的一点: 从按钮动作触发的角度下载外部zip文件
4)没有答案: 在nodejs中从服务器下载.zip文件
5)我不知道这甚至是什么语言:https: //stackoverflow.com/questions/35596764/zip-file-download-using-angularjs-directive
鉴于这些问题,如果这仍然是重复,我道歉.这是这个问题的另一个版本.
我的1.5.X客户端给我一个标题列表,每个标题都有一个相关的文件.我的节点4.X/Express 4.X服务器获取该列表,获取文件位置,创建一个zip文件,使用来自npm的express-zip,然后将该文件流回到响应中.然后,我希望我的客户端启动浏览器的"下载文件"选项.
这是我的客户端代码(Angular 1.5.X):
function bulkdownload(titles){
titles = titles || [];
if ( titles.length > 0 ) {
$http.get('/query/bulkdownload',{
params:{titles:titles},
responseType:'arraybuffer'
})
.then(successCb,errorCb)
.catch(exceptionCb);
}
function successCb(response){
// This is the part I believe I cannot get to work, my code snippet is below
};
function errorCb(error){
alert('Error: ' + JSON.stringify(error));
};
function exceptionCb(ex){
alert('Exception: ' + JSON.stringify(ex));
};
};
Run Code Online (Sandbox Code Playgroud)
带有express-zip的节点(4.X)代码,https: …
angularjs ×2
.net ×1
asp.net-mvc ×1
blob ×1
c# ×1
express ×1
javascript ×1
node.js ×1
pdf ×1
zip ×1