Example #1
0
function* getContent(file) {
  if (is.buffer(file)) {
    return file;
  }

  var created = false;
  if (is.string(file)) {
    file = fs.createReadStream(file);
    created = true;
  }

  if (!is.readableStream(file)) {
    throw new TypeError('upload file type error');
  }

  var bufs = [];
  var buf;
  while (buf = yield read(file)) {
    bufs.push(buf);
  }

  if (created) {
    file.destroy();
  }
  return Buffer.concat(bufs);
}
Example #2
0
proto.put = function* (name, file, options) {
  var content;

  options = options || {};
  if (is.buffer(file)) {
    content = file;
  } else if (is.string(file)) {
    options.mime = options.mime || mime.lookup(path.extname(file));
    var stream = fs.createReadStream(file);
    options.contentLength = yield this._getFileSize(file);
    return yield this.putStream(name, stream, options);
  } else if (is.readableStream(file)) {
    return yield this.putStream(name, file, options);
  } else {
    throw new TypeError('Must provide String/Buffer/ReadableStream for put.');
  }

  options.headers = options.headers || {};
  this._convertMetaToHeaders(options.meta, options.headers);

  var params = this._objectRequestParams('PUT', name, options);
  params.mime = options.mime;
  params.content = content;
  params.successStatuses = [200];

  var result = yield this.request(params);

  return {
    name: name,
    url: this._objectUrl(name),
    res: result.res,
  };
};
Example #3
0
proto.put = async function put(name, file, options) {
  let content;

  options = options || {};

  if (is.buffer(file)) {
    content = file;
  } else if (is.string(file)) {
    options.mime = options.mime || mime.lookup(path.extname(file));
    const stream = fs.createReadStream(file);
    options.contentLength = await this._getFileSize(file);
    return await this.putStream(name, stream, options);
  } else if (is.readableStream(file)) {
    return await this.putStream(name, file, options);
  } else {
    throw new TypeError('Must provide String/Buffer/ReadableStream for put.');
  }

  options.headers = options.headers || {};
  this._convertMetaToHeaders(options.meta, options.headers);

  const method = options.method || 'PUT';
  const params = this._objectRequestParams(method, name, options);

  callback.encodeCallback(params, options);

  params.mime = options.mime;
  params.content = content;
  params.successStatuses = [200];

  const result = await this.request(params);

  const ret = {
    name,
    url: this._objectUrl(name),
    res: result.res
  };

  if (params.headers && params.headers['x-oss-callback']) {
    ret.data = JSON.parse(result.data.toString());
  }

  return ret;
};