index.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import Resume from './resume';
  2. import Direct from './direct';
  3. import Logger from '../logger';
  4. import { Observable, MB, normalizeUploadConfig } from '../utils';
  5. import { HostPool } from './hosts';
  6. export * from './base';
  7. export * from './resume';
  8. export function createUploadManager(options, handlers, hostPool, logger) {
  9. if (options.config && options.config.forceDirect) {
  10. logger.info('ues forceDirect mode.');
  11. return new Direct(options, handlers, hostPool, logger);
  12. }
  13. if (options.file.size > 4 * MB) {
  14. logger.info('file size over 4M, use Resume.');
  15. return new Resume(options, handlers, hostPool, logger);
  16. }
  17. logger.info('file size less or equal than 4M, use Direct.');
  18. return new Direct(options, handlers, hostPool, logger);
  19. }
  20. /**
  21. * @param file 上传文件
  22. * @param key 目标文件名
  23. * @param token 上传凭证
  24. * @param putExtra 上传文件的相关资源信息配置
  25. * @param config 上传任务的配置
  26. * @returns 返回用于上传任务的可观察对象
  27. */
  28. export default function upload(file, key, token, putExtra, config) {
  29. // 为每个任务创建单独的 Logger
  30. var logger = new Logger(token, config === null || config === void 0 ? void 0 : config.disableStatisticsReport, config === null || config === void 0 ? void 0 : config.debugLogLevel, file.name);
  31. var options = {
  32. file: file,
  33. key: key,
  34. token: token,
  35. putExtra: putExtra,
  36. config: normalizeUploadConfig(config, logger)
  37. };
  38. // 创建 host 池
  39. var hostPool = new HostPool(options.config.uphost);
  40. return new Observable(function (observer) {
  41. var manager = createUploadManager(options, {
  42. onData: function (data) { return observer.next(data); },
  43. onError: function (err) { return observer.error(err); },
  44. onComplete: function (res) { return observer.complete(res); }
  45. }, hostPool, logger);
  46. manager.putFile();
  47. return manager.stop.bind(manager);
  48. });
  49. }
  50. //# sourceMappingURL=index.js.map