How can I help you?
File source in Angular Uploader component
26 Feb 202613 minutes to read
Paste to upload
The Uploader component allows you to upload files by selecting or dragging files from your file system. It also supports pasting images directly from the clipboard. You can upload any image currently copied in your clipboard.
When you paste an image, it is saved on the server with the default filename
image.png. You can rename the file on the server side. Use thegetUniqueIDmethod to generate a unique filename.
Refer to the following example for implementation details.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { UploaderModule } from '@syncfusion/ej2-angular-inputs'
import { Component } from '@angular/core';
import { UploadingEventArgs } from '@syncfusion/ej2-inputs';
import { getUniqueID } from '@syncfusion/ej2-base';
@Component({
imports: [
UploaderModule
],
standalone: true,
selector: 'app-root',
template: `
<ejs-uploader #defaultupload [asyncSettings]='path' autoUpload='false' (uploading)='onUploadBegin($event)'></ejs-uploader>
`
})
export class AppComponent {
public path: Object = {
saveUrl: 'https://services.syncfusion.com/angular/production/api/FileUploader/Save',
removeUrl: 'https://services.syncfusion.com/angular/production/api/FileUploader/Remove' };
constructor() {
}
public onUploadBegin(args: UploadingEventArgs) {
// check whether the file is uploading from paste.
if (args.fileData.fileSource === 'paste') {
let newName: string = getUniqueID(args.fileData.name.substring(0, args.fileData.name.lastIndexOf('.'))) + '.png';
args.customFormData = [{'fileName': newName}];
}
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));Save action for paste to upload
public void Save() {
var httpPostedFile = System.Web.HttpContext.Current.Request.Files["UploadFiles"];
var fileSave = System.Web.HttpContext.Current.Server.MapPath("UploadedFiles");
var fileSavePath = Path.Combine(fileSave, httpPostedFile.FileName);
if (!System.IO.File.Exists(fileSavePath)) {
httpPostedFile.SaveAs(fileSavePath);
var newName = System.Web.HttpContext.Current.Request.Form["fileName"];
var filePath = Path.Combine(fileSavePath.Substring(0, fileSavePath.LastIndexOf("//")), newName);
// Rename the file
System.IO.File.Move(fileSavePath, newName);
HttpResponse Response = System.Web.HttpContext.Current.Response;
Response.Clear();
Response.ContentType = "application/json; charset=utf-8";
Response.StatusDescription = fileSavePath;
Response.End();
}
}Directory upload
The Uploader component allows you to upload all files in a directory (and its subdirectories) to the server using the directoryUpload property. When enabled, the Uploader iterates through all files and subdirectories in the selected folder.
This feature allows you to select entire folders instead of individual files.
Directory upload is supported only in browsers that support HTML5 directory selection. In Microsoft Edge, you can use drag-and-drop to upload directories.
Refer to the following example to implement directory upload functionality.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { UploaderModule } from '@syncfusion/ej2-angular-inputs'
import { Component } from '@angular/core';
@Component({
imports: [
UploaderModule
],
standalone: true,
selector: 'app-root',
template: `
<ejs-uploader #defaultupload [asyncSettings]='path' directoryUpload='true'></ejs-uploader>
`
})
export class AppComponent {
public path: Object = {
saveUrl: 'https://services.syncfusion.com/angular/production/api/FileUploader/Save',
removeUrl: 'https://services.syncfusion.com/angular/production/api/FileUploader/Remove' };
constructor() {
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));Save action for directory upload
public void Save() {
var httpPostedFile = HttpContext.Current.Request.Files["UploadFiles"];
var fileSave = HttpContext.Current.Server.MapPath("UploadedFiles");
// split the folders by using file name
string[] folders = httpPostedFile.FileName.Split('/');
string fileSavePath = "";
if (folders.Length > 1)
{
for (var i = 0; i < folders.Length - 1; i++)
{
var newFolder = Path.Combine(fileSave, folders[i]);
// create folder
Directory.CreateDirectory(newFolder);
fileSave = newFolder;
}
fileSavePath = Path.Combine(fileSave, folders[folders.Length - 1]);
}
else
{
fileSavePath = Path.Combine(fileSave, httpPostedFile.FileName);
}
if (!System.IO.File.Exists(fileSavePath))
{
// save file in the corresponding server location
httpPostedFile.SaveAs(fileSavePath);
HttpResponse Response = System.Web.HttpContext.Current.Response;
Response.Clear();
Response.ContentType = "application/json; charset=utf-8";
// Sending the file path to client side
Response.StatusDescription = fileSavePath;
Response.End();
}
}Drag and drop
The Uploader component supports drag-and-drop file uploads.
You can drag files from your file system and drop them into the drop area.
By default, the Uploader component itself acts as the drop area.
The drop area is highlighted when you drag files over it.
Custom drop area
The Uploader component allows you to set an external HTML element as the drop area using the dropArea property.
The element can be specified as an HTML element reference or an element ID string.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { UploaderModule } from '@syncfusion/ej2-angular-inputs'
import { Component } from '@angular/core';
@Component({
imports: [
UploaderModule
],
standalone: true,
selector: 'app-root',
template: ` <div id='droparea'> Drop files here to upload </div>
<ejs-uploader #defaultupload [asyncSettings]='path' autoUpload='false' [dropArea]='ele'></ejs-uploader>
`
})
export class AppComponent {
public ele?: HTMLElement;
public path: Object = {
saveUrl: 'https://services.syncfusion.com/angular/production/api/FileUploader/Save',
removeUrl: 'https://services.syncfusion.com/angular/production/api/FileUploader/Remove' };
ngOnInit() {
this.ele = document.getElementById('droparea') as HTMLElement;
}
constructor() {
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));Customize drop area
customize the drop area’s appearance by overriding the default styles.
Use the e-upload-drag-hover CSS class to style the drop area when files are dragged over it.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { UploaderModule } from '@syncfusion/ej2-angular-inputs'
import { Component } from '@angular/core';
@Component({
imports: [
UploaderModule
],
standalone: true,
selector: 'app-root',
template: `
<div id='dropArea' style='height: auto; overflow: auto'>
<span id='drop'> Drop files here or <a href="" id='browse'><u>Browse</u></a> </span>
<ejs-uploader #defaultupload [asyncSettings]='path' [dropArea]='ele'></ejs-uploader>
</div>
`
})
export class AppComponent {
public path: Object = {
saveUrl: 'https://services.syncfusion.com/angular/production/api/FileUploader/Save',
removeUrl: 'https://services.syncfusion.com/angular/production/api/FileUploader/Remove' };
public ele?: HTMLElement;
ngOnInit() {
this.ele = document.getElementById('dropArea') as HTMLElement;
(document.getElementById('browse') as HTMLElement).onclick = function() {
(document.getElementsByClassName('e-file-select-wrap')[0].querySelector('button') as HTMLButtonElement).click();
return false;
}
}
constructor() {
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));You can also explore Angular File Upload feature tour page for its groundbreaking features. You can also explore our Angular File Upload example to understand how to browse the files which you want to upload to the server.