gcs-file-upload
Version:
Upload files to GCS and firebase storage.
61 lines (60 loc) • 2.56 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const Cloud = require("@google-cloud/storage");
const CloudStorage = Cloud.Storage;
class GcsFileUpload extends CloudStorage {
constructor(obj, bucketName) {
super(obj);
this.obj = obj;
this.bucketName = bucketName;
this.bucketName = bucketName;
}
createGCSBucket(bucketName) {
return __awaiter(this, void 0, void 0, function* () {
yield this.createBucket(bucketName);
return `Bucket ${bucketName} created.`;
});
}
getGCSBuckets() {
return this.bucket(this.bucketName);
}
uploadFile(file, options) {
return new Promise((resolve, reject) => {
const { originalname, buffer } = file;
const bucket = this.bucket(this.bucketName);
const blob = bucket.file(originalname.replace(/ /g, '_'));
const blobStream = blob.createWriteStream({
resumable: options ? options.resum : false,
gzip: options ? options.gcszip : false,
});
try {
blobStream.on('finish', () => {
const publicUrl = `https://storage.googleapis.com/${bucket.name}/${blob.name}`;
resolve(publicUrl);
})
.end(buffer);
}
catch (error) {
reject(error);
}
// blobStream.on('finish', () => {
// const publicUrl: string = `https://storage.googleapis.com/${bucket.name}/${blob.name}`
// resolve(publicUrl);
// })
// .on('error', () => {
// reject('Unable to upload file, something went wrong');
// })
// .end(buffer);
});
}
}
exports.GcsFileUpload = GcsFileUpload;