docs: function onFile(__newFile, encoding, done) {
    var buffers = [];
    var options = this.options;
  
    // Check the file limit
    if (options.perMaxBytes && __newFile.byteCount > options.perMaxBytes) {
      return done(new Error('The file \'' + __newFile.filename + '\' beyond size limit, only accept less than ' + options.perMaxBytes + ' bytes'));
    }
  
    // Check the accept content type
    if (options.acceptTypes && options.acceptTypes.indexOf(__newFile.headers['content-type']) === -1) {
      return done(new Error('Content-type of the file \'' + __newFile.filename + '\' does not accepted'));
    }
  
    // Determine the file descriptor-- the unique identifier.
    // Often represents the location where file should be written.
    __newFile.fd;
    var uploadDir = __newFile.fd;
    if (uploadDir.substr(0, 1) !== '/') {
      uploadDir = '/' + uploadDir;
    }
  
    // When then 'data' event emited, push the chunk to the buffers array.
    __newFile.on('data', function (chunk) {
      buffers.push(chunk);
    });
  
    // When the 'end' event emited, upload the 'buffers' to the upyun server.
    __newFile.on('end', function () {
      var buffer = Buffer.concat(buffers);
      uploadToUpyun.bind({ options })(uploadDir, buffer, __newFile, done);
    });
  }