我目前在前端使用 Angular,需要使用表单上传文件并将其转换为 blob,然后再将文件发送到服务器。
我真正想做的:我想从本地系统上传一个文件,然后在进行一些验证后将其转换为 blob。
这是我的 HTML
<input type="file" (change)="changeFile($event)">
Run Code Online (Sandbox Code Playgroud)
这是我的方法
changeFile(event) {
console.log(event);
var oReq = new XMLHttpRequest();
oReq.open("GET", `/${event.target.files[0].name}`, true);
oReq.responseType = "blob";
oReq.onload = function(oEvent) {
var blob = oReq.response;
console.log(blob)
};
oReq.send();
}
Run Code Online (Sandbox Code Playgroud)
它确实将其转换为 blob,但显示错误,因为我实际上是从本地系统上传文件时尝试发出获取请求。如果任何人都可以分享相关信息或博客或任何有助于实现这一目标的内容,那就太好了。
我用NG-工具与ng add @ng-toolkit/universal加角通用的支持,我的项目。
我能够创建没有错误的 prod 构建,而且我能够再次运行服务器,没有任何错误。当请求到达它时,它只会“卡住”(nodeJS 不呈现任何输出)。
我发现,我的一个组件正在破坏服务器端渲染。我发现问题出在 Mat-Carousel 上:
成分:
export class BannerComponent {
slides: any[] = [
// tslint:disable-next-line:max-line-length
{ image: 'assets/banner/banner-one.png' },
// tslint:disable-next-line:max-line-length
{ image: 'assets/banner/banner-two.png' },
// tslint:disable-next-line:max-line-length
{ image: 'assets/banner/banner-three.png' }
];
}
Run Code Online (Sandbox Code Playgroud)
模板:
<section class="sec-space-b" id="banner">
<mat-carousel
timings="250ms ease-in"
[autoplay]="true"
interval="5000"
color="accent"
maxWidth="auto"
proportion="25"
slides="5"
[loop]="true"
[hideArrows]="false"
[hideIndicators]="false"
[useKeyboard]="true"
[useMouseWheel]="false"
orientation="ltr"
>
<mat-carousel-slide
#matCarouselSlide
*ngFor="let slide of slides; let i = index"
overlayColor="#00000000"
[image]="slide.image"
[hideOverlay]="false"
></mat-carousel-slide>
</mat-carousel>
</section>
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?我可以以某种方式从服务器端构建中排除特定组件吗?
我有一个函数试图将3个请求链接在一起,如下所示:
showProfileDetails() {
this.getUserInfo(this.currentUser.id).pipe(
mergeMap(e =>
this.getAccounts(this.currentUser.id)
),
mergeMap(e =>
this.getPayments(this.currentUser.id)
)
).subscribe(data =>
console.log('first attempt on observables: ', data)
)
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是同步地从每个调用中检索数据并将其存储在变量中,这样我就可以在DOM中呈现数据.
但我得到的只是上次调用的数据,btw返回错误,如何在不停止此过程的情况下处理此错误?在此先感谢,我是Angular的新手.
最后,当我尝试在我的ruby程序中添加splat并打印red_team时没有显示我传递的内容,但它显示了地址.
只需在终端上运行这段代码,您就会知道我在说什么.它告诉我这个
Power Rangers team: `#<Context::Player:0x0000000252c3d8>, #<Context::Player:0x0000000252c298>, #<Context::Player:0x0000000252c158>, #<Context::Player:0x0000000252c018>, #<Context::Player:0x0000000252bed8>`
Run Code Online (Sandbox Code Playgroud)
我的代码:
class Player
attr_accessor :name, :age, :skill_level
def initialize (name, age, skill_level)
@name = name
@age = age
@skill_level = skill_level
end
def to_s
puts "<#{@name}: #{@skill_level}(SL), #{@age}(AGE)"
end
end
class Team
include Enumerable
attr_accessor :name, :players
def initialize (name)
@name = name
@players = []
end
def add_players (*players)
@players += players
end
def to_s
"#{@name} team: #{@players.join(', ')}"
end
def each
@players.each {|player| yield player}
end
end
player1 …Run Code Online (Sandbox Code Playgroud)