我正在使用带有HTTP资源的AngularJS来调用外部API,我的响应是一个字节数组.我需要在新窗口中将此字节数组转换为PDF.我没有看到任何非常好的解决方案在这里工作跨浏览器或纯javascript.有没有办法做到这一点?
这是我的代码:
使用Javascript
Document.preview({id: $scope.order.id}, function(data){
// Open PDF Here
var file = new Blob([data], {type: 'application/pdf'});
var fileURL = URL.createObjectURL(file);
window.open(fileURL);
});
Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的HttpClient上添加一个"X-Auth-Token"作为标题,当我发出请求时,我收到403错误禁止,这是有道理的因为我不认为我的X-Auth-Token被附加为标题.
如何在标题中指定"X-Auth-Token"?
这是相关代码:
using (var c = new HttpClient())
{
c.BaseAddress = new Uri(url);
c.DefaultRequestHeaders.Accept.Clear();
c.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
c.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(token);
Run Code Online (Sandbox Code Playgroud) 我使用Yeoman使用bower和grunt构建一个角度应用程序.运行grunt服务给了我这个错误:
Running "connect:livereload" (connect) task
Fatal error: Port 9000 is already in use by another process.
Run Code Online (Sandbox Code Playgroud)
我有另一个使用端口9000的进程,所以我想改变Grunt的端口.我试图改变我的Gruntfile中的端口,但我继续得到同样的错误.以下是Gruntfile.js中的grunt服务器设置
connect: {
options: {
port: 9002,
hostname: 'localhost',
livereload: 35729
},
Run Code Online (Sandbox Code Playgroud) 我的角度选择没有约束力.我可以告诉值是正确的,但是选择没有更新.如果值存在,为什么不绑定?
<div ng-controller="MyController" ng-app>
<select class="form-control" ng-model="colorId"ng-options="color.id as color.name for color in colorList">
<option value="">--Select a Color--</option>
</select>
<input type="button" value="submit" ng-click="Select()"></input>
Run Code Online (Sandbox Code Playgroud)
function MyController($scope) {
$scope.colorList = [{
id: '1',
name: 'red'
}, {
id: '2',
name: 'blue'
}, {
id: '3',
name: 'green'
}];
var colorId = 3;
$scope.colorId = colorId;
alert($scope.colorId);
$scope.Select = function () {
var colorId = 2;
$scope.colorId = colorId;
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个小提琴:
我从 HTTP 请求接收到以下二进制流:
HTTP请求
Document.get({id: $scope.documentId}, function(stream){
});
Run Code Online (Sandbox Code Playgroud)
角工厂
.factory('Document', ['$resource', 'DOCUMENTS_CONFIG',
function($resource, DOCUMENTS_CONFIG) {
return $resource(DOCUMENTS_CONFIG.DETAIL_URL, {}, {
get: {
method: 'GET',
params: {},
url: DOCUMENTS_CONFIG.DETAIL_URL,
isArray: false
}
});
}
]);
Run Code Online (Sandbox Code Playgroud)
回复

控制台.log(流)
我需要将其转换为 Uint8Array。我尝试将其转换为 bas64
// Convert Binary Stream To String
var dataString = JSON.stringify(stream);
// Convert to Base 64 Data
var base64Data = window.btoa(unescape(encodeURIComponent(dataString)));
Run Code Online (Sandbox Code Playgroud)
当我运行此命令时,我收到错误“格式错误的 uri 异常”。我也尝试过 window.btoa(dataString) 但出现“无法在“Window”上执行“btoa”:要编码的字符串包含 Latin1 范围之外的字符”。
我怎样才能将其转换为 Uint8Array?
angularjs ×3
javascript ×2
binarystream ×1
bytearray ×1
c# ×1
gruntjs ×1
httpclient ×1
jquery ×1
livereload ×1
ng-options ×1
pdf ×1
uint8t ×1