sql >> データベース >  >> NoSQL >> MongoDB

MongooseのMulterを使用してMongoDBにファイルを保存する

    あなたが間違った道を走っている男。以前の質問リクエストで、Multerはファイルをデータベースに直接保存するのではなく、ファイルディスクシステムに保存するために使用されることをすでに説明しました。そのためには、GRIDFSを使用する必要があります。

    あなたの現在の質問に来る。

    app.post('/Upload', upload.single('solution') ,function (req, res, next) {
        console.log(req.file);
    });
    

    ここでupload.single('solution') -関数Uploadを呼び出し、渡されたファイル名は解決策ですが、ここでは使用できないことは明らかです。

    このタイプのフォーマットを使用してください-Multerのドキュメント

    var storage = multer.diskStorage({
      destination: function (req, file, cb) {
        cb(null, '/tmp/my-uploads')
      },
      filename: function (req, file, cb) {
        cb(null, file.fieldname + '-' + Date.now())
      }
    })
    
    var upload = multer({ storage: storage })
    

    そこにあるストレージパーツは、ファイルを保存する必要がある場所へのパスを指定するために使用され、ファイル名セクションは、必要なファイル名を変更するために使用されます。

    それが役立つので、ドキュメントを読んでください。サードパーティのモジュールを使用する場合、それらの作業を簡単に使用できるように、サードパーティのモジュールがすでに提供している情報を確認する必要があります。

    簡単にします。これが機能する既製のコードです。

    ng-fileuploadを介してファイルをアップロードしているときにMulterが奇妙なエラーをスローする

    そのスレッドを確認してください。質問は私によって提起されました-一度に複数のファイルのように、配列形式でファイルを送信していたという問題がありました。それを行わない場合は、ng-file-uploadセグメントを変更して、単一のアップロードデモの例を使用し、サーバー側でnodejsコードを.arrayに置き換えます。 .singleを使用 ファイルディスクシステムを使用してファイルを保存したい場合は、物事は希望どおりに機能します。

    この方法では、ファイルをmongodbに直接保存することはできません。

    さらに詳しい説明が必要な場合はお知らせください。



    1. マングースは配列からObjectIdをプルします

    2. CompositeServerSelectorを使用してサーバーを30000ms選択した後、タイムアウトが発生しました

    3. Redisは順不同で挿入しますか、それとも奇妙に並べ替えますか?

    4. ipをバインドしているにもかかわらず、ローカルネットワークでMongoDBサーバーにアクセスできない