MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

Sails.js स्किपर के साथ MongoDB पर फ़ाइलें अपलोड करने से पहले सामान की जाँच करना (वैध फ़ाइलें, छवि का आकार बदलना आदि)

ठीक है, कुछ समय के लिए इसके साथ खिलवाड़ करने के बाद मैं एक ऐसा तरीका खोजने में कामयाब रहा जो काम करने लगता है।

यह शायद बेहतर हो सकता है, लेकिन यह वही करता है जो मैं इसे अभी करना चाहता हूं:

upload: function(req, res) {
    var upload = req.file('file')._files[0].stream,
        headers = upload.headers,
        byteCount = upload.byteCount,
        validated = true,
        errorMessages = [],
        fileParams = {},
        settings = {
            allowedTypes: ['image/jpeg', 'image/png'],
            maxBytes: 100 * 1024 * 1024
        };

    // Check file type
    if (_.indexOf(settings.allowedTypes, headers['content-type']) === -1) {
        validated = false;
        errorMessages.push('Wrong filetype (' + headers['content-type'] + ').');
    }
    // Check file size
    if (byteCount > settings.maxBytes) {
        validated = false;
        errorMessages.push('Filesize exceeded: ' + byteCount + '/' + settings.maxBytes + '.');
    }

    // Upload the file.
    if (validated) {
        sails.log.verbose(__filename + ':' + __line + ' [File validated: starting upload.]');

        // First upload the file
        req.file('file').upload({}, function(err, files) {
            if (err) {
                return res.serverError(err);
            }

            fileParams = {
                fileName: files[0].fd.split('/').pop().split('.').shift(),
                extension: files[0].fd.split('.').pop(),
                originalName: upload.filename,
                contentType: files[0].type,
                fileSize: files[0].size,
                uploadedBy: req.userID
            };

            // Create a File model.
            File.create(fileParams, function(err, newFile) {
                if (err) {
                    return res.serverError(err);
                }
                return res.json(200, {
                    message: files.length + ' file(s) uploaded successfully!',
                    file: newFile
                });
            });
        });
    } else {
        sails.log.verbose(__filename + ':' + __line + ' [File not uploaded: ', errorMessages.join(' - ') + ']');

        return res.json(400, {
            message: 'File not uploaded: ' + errorMessages.join(' - ')
        });
    }

},

स्किपर-ग्रिड का उपयोग करने के बजाय मैंने स्थानीय फ़ाइल संग्रहण का उपयोग करना चुना है, लेकिन विचार वही रहता है। दोबारा, यह उतना पूर्ण नहीं है जितना इसे अभी तक होना चाहिए, लेकिन यह फ़ाइल प्रकार और आकार जैसी साधारण सामग्री को सत्यापित करने का एक आसान तरीका है। अगर किसी के पास बेहतर समाधान है, तो कृपया इसे पोस्ट करें :)!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. जावा में बीएसओएन से जेएसओएन दस्तावेज़ रूपांतरण

  2. MongoDB:नेस्टेड सरणी फ़िल्टरिंग के साथ खोजें और खोजें

  3. MongoDB घड़ी () NodeJS और Mongoose के साथ डेटाबेस में परिवर्तन का निरीक्षण करने के लिए

  4. MongoDB और Mongoose:दस्तावेज़ संदर्भ आईडी की नेस्टेड सरणी

  5. रिकर्सन क्वेरी?