diff --git a/lib/index.d.ts b/lib/index.d.ts index 01c0fe2..fa58b94 100644 --- a/lib/index.d.ts +++ b/lib/index.d.ts @@ -1,3 +1,4 @@ +/// import * as multer from 'multer'; import { ConfigurationObject } from '@google-cloud/storage'; export default class MulterGoogleCloudStorage implements multer.StorageEngine { diff --git a/lib/index.js b/lib/index.js index e6b5a90..4ccae60 100644 --- a/lib/index.js +++ b/lib/index.js @@ -2,7 +2,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); var uuid = require("uuid/v1"); var storage = require('@google-cloud/storage'); -var MulterGoogleCloudStorage = (function () { +var MulterGoogleCloudStorage = /** @class */ (function () { function MulterGoogleCloudStorage(opts) { var _this = this; this._handleFile = function (req, file, cb) { @@ -15,7 +15,12 @@ var MulterGoogleCloudStorage = (function () { return cb(err); } var gcFile = _this.gcsBucket.file(filename); - file.stream.pipe(gcFile.createWriteStream({ predefinedAcl: _this.options.acl || 'private' })) + file.stream.pipe(gcFile.createWriteStream({ + predefinedAcl: _this.options.acl || 'private', + metadata: { + contentType: file.mimetype + } + })) .on('error', function (err) { return cb(err); }) .on('finish', function (file) { return cb(null, { path: "https://" + _this.options.bucket + ".storage.googleapis.com/" + filename, diff --git a/lib/index.js.map b/lib/index.js.map index 065c974..50b12a2 100644 --- a/lib/index.js.map +++ b/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/index.test.d.ts b/lib/index.test.d.ts index e69de29..cb0ff5c 100644 --- a/lib/index.test.d.ts +++ b/lib/index.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/index.test.js.map b/lib/index.test.js.map index 5f9bf19..3005370 100644 --- a/lib/index.test.js.map +++ b/lib/index.test.js.map @@ -1 +1 @@ -{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":";;AAAA,6BAA8B;AAC9B,iCAAoC;AAGpC,QAAQ,CAAC,uBAAuB,EAAE;IAC9B,MAAM,CAAC;QACH,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,IAAM,WAAW,GAAG,cAAQ,MAAM,CAAC,EAAC,MAAM,EAAE,cAAO,CAAC,EAAC,CAAA,CAAA,CAAC,CAAC;QACvD,OAAO,CAAC,YAAY,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC;QAE3D,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAC;QAE/C,IAAM,wBAAwB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;QAC5D,IAAM,YAAY,GAAG,IAAI,wBAAwB,EAAE,CAAC;QAEpD,aAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACrD,aAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACrD,aAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,cAAM,OAAA,OAAO,CAAC,OAAO,EAAE,EAAjB,CAAiB,CAAC,CAAC;AACnC,CAAC,CAAC,CAAA"} \ No newline at end of file +{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":";;AAAA,6BAA8B;AAC9B,iCAAoC;AAGpC,QAAQ,CAAC,uBAAuB,EAAE;IAC9B,MAAM,CAAC;QACH,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,IAAM,WAAW,GAAG,cAAQ,OAAO,EAAC,MAAM,EAAE,cAAO,CAAC,EAAC,CAAA,CAAA,CAAC,CAAC;QACvD,OAAO,CAAC,YAAY,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC;QAE3D,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAC;QAE/C,IAAM,wBAAwB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;QAC5D,IAAM,YAAY,GAAG,IAAI,wBAAwB,EAAE,CAAC;QAEpD,aAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACrD,aAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACrD,aAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,cAAM,OAAA,OAAO,CAAC,OAAO,EAAE,EAAjB,CAAiB,CAAC,CAAC;AACnC,CAAC,CAAC,CAAA"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9f7b5f0..155ac03 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "multer-google-storage", - "version": "0.0.0-development", + "version": "0.0.1-development", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index af47eed..2c207e4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "multer-google-storage", - "version": "0.0.0-development", + "version": "0.0.1-development", "description": "Streaming multer storage engine for Google Cloud Storage", "main": "lib/index.js", "typings": "lib/index", diff --git a/src/index.ts b/src/index.ts index 467a899..26f2226 100644 --- a/src/index.ts +++ b/src/index.ts @@ -58,8 +58,13 @@ export default class MulterGoogleCloudStorage implements multer.StorageEngine { if (err) { return cb(err); } - var gcFile = this.gcsBucket.file(filename); - file.stream.pipe(gcFile.createWriteStream({ predefinedAcl: this.options.acl || 'private' })) + var gcFile = this.gcsBucket.file(filename); + file.stream.pipe(gcFile.createWriteStream({ + predefinedAcl: this.options.acl || 'private', + metadata: { + contentType: file.mimetype + } + })) .on('error', (err) => cb(err)) .on('finish', (file) => cb(null, { path: `https://${this.options.bucket}.storage.googleapis.com/${filename}`,