I want to select the files first and then to start upload those files by an another button instead of component's own Upload
button.
How can I do this?
Example code what I've tried:
<button pButton type="button" label="Start Upload"
(click)="startUpload()"></button>
<p-fileUpload #fileInput name="fileIcon"
url="rest/batch/file/multimedia/"></p-fileUpload>
@ViewChild('fileInput') fileInput:ElementRef;
constructor( private renderer: Renderer ) { }
startUpload(){
// this.fileInput.upload(); -> doesn't compile, undefined
// this.fileInput.nativeElement.upload(); -> this.fileInput.nativeElement is undefined
?????????????????
}
Example code which works for me
import {FileUpload} from 'primeng/primeng';
@Component({
...
})
export class AppComponent {
@ViewChild('fileInput') fileInput: FileUpload;
startUpload(){
this.fileInput.upload();
}
}
Plunker Example
If you can, you should use build in buttons. To get access to class variables and methods, you can use ViewChild. You should:
Add new variable to your component.ts with FileUpload type (so now you have access to variables and methods - in VS Code you can click right and go to definition to see all things)
@ViewChild('fileInput') fileInput:FileUpload;
// remember to import FileUpload and of course FileUploadModule
onSelect() {
// here custom validation for file (for example check image's dimension)
}
customUpload(event) {
// here you can set your custom upload
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With