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