Based on Typescript and a total revamp of AngularJS, Angular is an open-source framework for developing mobile and web apps. That framework has been gaining popularity over the years with a large developer following.
Uploading Angular images to Cloudinary triggers this process:
- The app’s UI, i.e., its client side, picks up the image files through a form control or component.
- The app’s server side collects, transforms, and saves the files in the cloud.
How to spur those two activities? By means of an HTML template along with an Angular-image upload component. See the tutorial below.
Angular Image Uploads
Enabling Angular image uploads to Cloudinary takes two steps.
Step 1: Set Up an HTML Template
First, place an image upload component in your app for your users by doing either of the following:
Specify, in HTML, the HTML5 file’s input type by adding the code below to the
app.component.html
file:Type the following npm command to install the Angular image-upload component
ng2-file-upload
:Next, add the related parameters to the
app.component.html
file by attaching the Angular image-upload component to the HTML markup:- For multiple uploads
- For single uploads
Step 2: Create an Angular Image Upload Component
First, install the Angular Image Upload Cloudinary library that works for Angular 5, 6, and 7 with this npm command:
Afterwards, add the code below to the src/app/app.component.ts
file to build an Angular image-upload component:
import { Component, OnInit, Input } from '@angular/core'; import { FileUploader, FileUploaderOptions, ParsedResponseHeaders } from 'ng2-file-upload'; import { Cloudinary } from '@cloudinary/angular-5.x'; @Component({ selector: 'app-list', templateUrl: 'app.component.html' }) export class ImageUploadComponent implements OnInit { @Input() responses: Array<any>; private hasBaseDropZoneOver: boolean = false; private uploader: FileUploader; private title: string; constructor( private cloudinary: Cloudinary, private zone: NgZone, private http: HttpClient ) { this.responses = []; this.title = ''; } ngOnInit(): void { // Create the file uploader, wire it to upload to your account const uploaderOptions: FileUploaderOptions = { url: `https://api.cloudinary.com/v1_1/${this.cloudinary.config().cloud_name}/upload`, // Upload files automatically upon addition to upload queue autoUpload: true, // Use xhrTransport in favor of iframeTransport isHTML5: true, // Calculate progress independently for each uploaded file removeAfterUpload: true, // XHR request headers headers: [ { name: 'X-Requested-With', value: 'XMLHttpRequest' } ] }; this.uploader = new FileUploader(uploaderOptions); this.uploader.onBuildItemForm = (fileItem: any, form: FormData): any => { // Add Cloudinary unsigned upload preset to the upload form form.append('upload_preset', this.cloudinary.config().upload_preset); // Add file to upload form.append('file', fileItem); // Use default "withCredentials" value for CORS requests fileItem.withCredentials = false; return { fileItem, form }; }; fileOverBase(e: any): void { this.hasBaseDropZoneOver = e; } } _upload.component.ts_
cloud_ name
in the code above with your account’s cloud name as displayed on your Cloudinary Dashboard.The ImageUpload
component in the code processes the uploaded files through the ng2-file-upload
component, subsequently uploading them to Cloudinary.
Remarkably, such a setup eliminates the tedious chore of developing a back-end API to receive files from the front end and to validate and process them before storing them in Cloudinary. As soon as a user has uploaded a file, Cloudinary seamlessly handles the remaining tasks that culminate in the file being stored in the Media Library.
For the complete code of the above process, see this comprehensive GitHub repository.
AngularJS Image Uploads
For app developers who are on AngularJS, follow the steps below to upload AngularJS files.
First, install the Cloudinary AngularJS SDK and the ng-file-upload
library with this npm command:
Next, define CloudinaryProvider
in your app’s configuration file with this code:
yourApp.config(['cloudinaryProvider', function (cloudinaryProvider) { cloudinaryProvider .set("cloud_name", "good") .set("secure", true) .set("upload_preset", "my_preset"); }]);
cloud_ name
with your account’s cloud name as displayed on your Cloudinary Dashboard.Finally, attach an uploadFiles
function in your app to the controller $scope
with, for example, this code:
$scope.uploadFiles = function(files){ $scope.files = files; angular.forEach(files, function(file){ if (file && !file.$error) { file.upload = $upload.upload({ url: "https://api.cloudinary.com/v1_1/" + cloudinary.config().cloud_name + "/upload", data: { upload_preset: cloudinary.config().upload_preset, context: 'image=' + $scope.title, file: file } }).progress(function (e) { file.progress = Math.round((e.loaded * 100.0) / e.total); file.status = "Uploading... " + file.progress + "%"; }).success(function (data, status, headers, config) { $rootScope.list = $rootScope.list || []; data.context = {custom: {image: $scope.title}}; file.result = data; $rootScope.photos.push(data); }).error(function (data, status, headers, config) { file.result = data; }); } }); };
The $upload.upload
function uploads all the files straight to Cloudinary.
Manipulate and Deliver Uploaded Angular Or AngularJS Files
Cloudinary’s Angular SDK contains several out-of-the-box components that enable you to manipulate, optimize, and deliver images in the best format. Add those components to your Angular app.
Afterwards, specify the attributes and values that you desire for the parameters for the <cl-image>
component, for example:
<cl-image public-id="dog" angle="20" format="jpg"> <cl-transformation height="150" width="150" crop="fill" effect="sepia"></cl-transformation> <cl-transformation overlay="text:arial_20:Angular" color="#EECCAA" gravity="south" y="20"></cl-transformation> </cl-image>
In the above code, the value of public-id
(dog) is the name of the image stored in Cloudinary.
To manipulate and transform images and files as you desire, simply embed the <cl-transformation>
component within <cl-image>
. For details of the many options available, see the related Cloudinary documentation. You’ll be amazed at the wealth of choices at your fingertips and the marvelous effects generated by the manipulation and transformation tasks. Do give it a whirl!