1

ファイルがexpress.jsを使用してアップロードされると、新しい名前が付けられます(ハッシュか何かだと思います)。そのハッシュは一意ですか?データベースなどでファイル ID として使用できますか?

4

3 に答える 3

1

shortId.generate()一意の ID を生成するために使用できます。

var shortId = require('shortid');   
var uniqueFileName = shortId.generate();

fs.rename(file.path, cfg.data + '/uploads/' + uniqueFileName, function(err){
    user.profileImage = uniqueFileName;

    user.save(function(err) {
        if ( err ) return res.json(400, err);

        res.json(200, { profileImage: user.profileImage });
    });
});
于 2014-07-13T18:06:19.203 に答える
1

では、どのようにファイルを受信して​​いますか?

アップロードにフォームを使用していると思いますか?その場合、表示されているハッシュはおそらく単なる一時ファイル名であり、アップロードされたファイルをディスク (またはもちろんデータベース) に書き込む必要があります。

手順全体は、この記事で非常によく説明されています: http://howtonode.org/really-simple-file-uploads

したがって、内部的に表現する bodyparser は、次の式に基づいて一時フォルダーを選択する node-formidable を使用します。process.env.TMP || process.env.TMPDIR || process.env.TEMP || '/tmp' || process.cwd();

念のため、暗号ノード コア モジュールによって提供されるハッシュ アルゴリズムのいずれかを使用する必要があります。

この例のようにハッシュを生成します (fileData はファイルである必要があります)。

var crypto = require("crypto");
var uniqueID = (crypto.createHash('md5').update(fileData, 'utf8').digest("hex")).toString();
于 2013-09-15T19:07:40.003 に答える