ठीक है, कुछ समय के लिए इसके साथ खिलवाड़ करने के बाद मैं एक ऐसा तरीका खोजने में कामयाब रहा जो काम करने लगता है।
यह शायद बेहतर हो सकता है, लेकिन यह वही करता है जो मैं इसे अभी करना चाहता हूं:
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(' - ')
});
}
},
स्किपर-ग्रिड का उपयोग करने के बजाय मैंने स्थानीय फ़ाइल संग्रहण का उपयोग करना चुना है, लेकिन विचार वही रहता है। दोबारा, यह उतना पूर्ण नहीं है जितना इसे अभी तक होना चाहिए, लेकिन यह फ़ाइल प्रकार और आकार जैसी साधारण सामग्री को सत्यापित करने का एक आसान तरीका है। अगर किसी के पास बेहतर समाधान है, तो कृपया इसे पोस्ट करें :)!