A simple file sharing site with an easy to use API and online panel.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

56 lignes
2.3KB

  1. var angular = require('angular');
  2. angular.module('UploadComp', ['ngFileUpload', 'AuthSvc']).component('uploadComponent', {
  3. templateUrl: '/views/shrimpa/upload-form.html',
  4. controller: ['$scope', 'Upload', '$timeout', function ($scope, Upload, $timeout) {
  5. $scope.errToString = function (err) {
  6. if (err === 'maxSize')
  7. return "File too large.";
  8. else
  9. return err;
  10. };
  11. $scope.uploadFiles = function (files, errorFiles) {
  12. $scope.files = $scope.files ? $scope.files.concat(files) : files;
  13. $scope.errorFiles = $scope.errorFiles ? $scope.errorFiles.concat(errorFiles) : errorFiles;
  14. files.reduce((promise, file) => {
  15. return promise.then(() => new Promise((resolve, reject) => {
  16. file.upload = Upload.upload({
  17. url: '/api/upload',
  18. method: 'POST',
  19. file: file
  20. });
  21. file.upload.then(
  22. function (response) {
  23. resolve();
  24. $timeout(function () {
  25. file.result = response.data;
  26. });
  27. },
  28. function (response) {
  29. if (response.status !== 200) {
  30. if (response.status === 401) {
  31. file.$error = "Unauthorized.";
  32. } else if (response.status === 403) {
  33. file.$error = "Forbidden.";
  34. } else {
  35. file.$error = "Unknown error " + response.status;
  36. }
  37. var index = $scope.files.indexOf(file);
  38. $scope.errorFiles.push(file);
  39. $scope.files.splice(index, 1);
  40. }
  41. },
  42. function (evt) {
  43. file.progress = Math.floor(Math.min(100.0, 100 * evt.loaded / evt.total));
  44. }
  45. );
  46. }));
  47. }, Promise.resolve());
  48. };
  49. }],
  50. controllerAs: 'vm'
  51. });