问题
I am working on an angular2 project, I have a file in assets folder and I have created a button to download the file while running the app.
I see there are quite a many solutions to the above problem so i got confused. Can you please help.
<button pButton type="button" (click)="f1()" label="Download Sample Defaults
XML File"></button>
I need code for f1() which can help me download the file to my Download folder when clicking on above button. Help appreciated. Thanks
回答1:
You can either style an anchor element to look like a button and set it's href to assets/file
<a href="assets/file">Download here</a>
Or create an anchor element on the fly, set it's href element and click it.
Something like:
let link = document.createElement('a');
link.setAttribute('type', 'hidden');
link.href = 'assets/file';
link.download = path;
document.body.appendChild(link);
link.click();
link.remove();
回答2:
You don't need to change the template. Use this way
f1() {
window.open('path', '_blank');
}
ex:
f1() {
window.open('/assets/images/blabla.png', '_blank');
}
update
If you need to download file instead of opening a new tab use a link with html5 download attribute ex:
<a download="filename" target="_blank" href="/assets/images/blabla.png">
Click here to download image
</a>
回答3:
you can try this solution
ts file code
downloadFile(){
let link = document.createElement("a");
link.download = "filename";
link.href = "assets/images/user-image.png";
link.click();
}
html file code
<button (click)="downloadFile()">Download</button>
回答4:
This should work, short sweet and simple, the "download" and "#"-"yoclickme" makes it work
<a href="{{ this.fileurl }}" download #yoclickme></a>
<button (click)="yoclickme.click()"> Download </button>
来源:https://stackoverflow.com/questions/50907542/download-a-file-from-asset-folder-when-clicking-on-a-button