280

Express 3を使用してnode.jsでファイルアップロード機能を作成しています。

画像のファイル拡張子を取得したいと思います。そのため、ファイルの名前を変更して、ファイル拡張子を追加できます。

app.post('/upload', function(req, res, next) {
    var is = fs.createReadStream(req.files.upload.path),
        fileExt = '', // I want to get the extension of the image here
        os = fs.createWriteStream('public/images/users/' + req.session.adress + '.' + fileExt);
});

node.jsで画像の拡張子を取得するにはどうすればよいですか?

4

14 に答える 14

608

ファイル名の拡張子を取得するには、次のことができると思います。

var path = require('path')

path.extname('index.html')
// returns
'.html'
于 2013-04-03T03:32:55.650 に答える
37

アップデート

元の回答以降、extname()pathがモジュールに追加されました。Snowfish の回答を参照してください。

元の答え:

簡単な方法でそれを行う方法が見つからなかったため、この関数を使用してファイル拡張子を取得しています(しかし、あると思います):

function getExtension(filename) {
    var ext = path.extname(filename||'').split('.');
    return ext[ext.length - 1];
}

それを使用するには「パス」が必要です。

path モジュールを使用しない別の方法:

function getExtension(filename) {
    var i = filename.lastIndexOf('.');
    return (i < 0) ? '' : filename.substr(i);
}
于 2012-06-02T20:16:53.040 に答える
23
// you can send full url here
function getExtension(filename) {
    return filename.split('.').pop();
}

Express を使用している場合は、ミドルウェア (bodyParser) を構成するときに次の行を追加してください。

app.use(express.bodyParser({ keepExtensions: true}));
于 2013-09-06T02:26:46.660 に答える
4

ファイルの拡張子を返すために、extname をインポートします。

import { extname } from 'path';
extname(file.originalname);

ここで、file はフォームのファイル「名前」です

于 2019-09-10T20:58:09.940 に答える
1
var fileName = req.files.upload.name;

var arr = fileName.split('.');

var extension = arr[length-1];
于 2015-02-20T07:12:15.670 に答える
0

これを試してみてください

const path = require('path');

function getExt(str) {
  const basename = path.basename(str);
  const firstDot = basename.indexOf('.');
  const lastDot = basename.lastIndexOf('.');
  const extname = path.extname(basename).replace(/(\.[a-z0-9]+).*/i, '$1');

  if (firstDot === lastDot) {
    return extname;
  }

  return basename.slice(firstDot, lastDot) + extname;
}

// all are `.gz`
console.log(getExt('/home/charlike/bar/file.gz'));
console.log(getExt('/home/charlike/bar/file.gz~'));
console.log(getExt('/home/charlike/bar/file.gz+cdf2'));
console.log(getExt('/home/charlike/bar/file.gz?quz=zaz'));

// all are `.tar.gz`
console.log(getExt('/home/charlike/bar/file.tar.gz'));
console.log(getExt('/home/charlike/bar/file.tar.gz~'));
console.log(getExt('/home/charlike/bar/file.tar.gz+cdf2'));
console.log(getExt('/home/charlike/bar/file.tar.gz?quz=zaz'));

于 2020-04-02T13:07:15.900 に答える