MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Sails.js kiểm tra nội dung trước khi tải tệp lên MongoDB bằng skipper (tệp hợp lệ, thay đổi kích thước hình ảnh, v.v.)

Được rồi, sau một thời gian loay hoay với điều này, tôi đã tìm ra một cách có vẻ hiệu quả.

Nó có thể tốt hơn, nhưng nó không làm những gì tôi muốn nó làm bây giờ:

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(' - ')
        });
    }

},

Thay vì sử dụng skipper-gridfs, tôi đã chọn sử dụng lưu trữ tệp cục bộ, nhưng ý tưởng vẫn như cũ. Một lần nữa, nó vẫn chưa hoàn chỉnh nhưng đó là một cách dễ dàng để xác thực những thứ đơn giản như loại tệp và kích thước. Nếu ai đó có giải pháp tốt hơn, vui lòng đăng nó :)!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. cách chèn số tự động tăng với bộ sưu tập mongoose của tôi

  2. mongodb:tôi có nên luôn sử dụng tùy chọn 'an toàn' khi cập nhật không

  3. Thực thi quyền kiểm soát truy cập dựa trên vai trò với ClusterControl

  4. Tôi có một truy vấn mongodb và tôi muốn tìm từ đối sánh chính xác "Được chấp thuận"

  5. Làm thế nào để tải hình ảnh lên thư mục bằng nodejs và lưu đường dẫn vào mongodb?