liuyg
2021-07-02 25ce610f6ecca7325e7a743dc032c4a76559c63d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
define([
    'dojo/Deferred',
    'dojo/promise/all',
    'jimu/portalUtils',
    'jimu/utils'
 
  ],
  function(Deferred, all, portalUtils, jimuUtils) {
    return {
      AddResourcesToItemForAppSave: function(portalUrl, resourcesUrls, originItemId, newItemId) {
        //Add resources to item, based on the existing virtual resources url to determine the path and file name
        //resourcesUrls:[{resUrl:required,b64}]
        resourcesUrls = resourcesUrls || [];
        if (resourcesUrls.length === 0) {
          var deferred = new Deferred();
          deferred.resolve(resourcesUrls);
          return deferred;
        }
        var getBlobDefs = resourcesUrls.map(function(item) {
          var prefix_FileName = item.resUrl.split('resources/')[1];
          var getBlobDef = new Deferred();
          if (item.b64) {
            var blobFile = jimuUtils.b64toBlob(item.b64);
            getBlobDef.resolve({
              blob: blobFile,
              fileName: prefix_FileName.split('/')[1],
              prefixName: prefix_FileName.split('/')[0]
            });
          } else {
            var retUrl = item.resUrl;
            if (retUrl.indexOf('${itemId}') > 0) {
              retUrl = retUrl.replace('${itemId}', originItemId);
            }
            jimuUtils.resourcesUrlToBlob(retUrl).then(function(result) {
              getBlobDef.resolve({
                blob: result,
                fileName: prefix_FileName.split('/')[1],
                prefixName: prefix_FileName.split('/')[0]
              }, function(err) {
                console.error(err.message || err);
                getBlobDef.reject(err);
              });
            });
          }
          return getBlobDef;
        });
        return all(getBlobDefs).then(function(result) {
          if (result instanceof Array && result.length > 0) {
            var uploadDefs = result.map(function(e) {
              var itemId = originItemId;
              if (newItemId) {
                itemId = newItemId;
              }
              return portalUtils.addResource(portalUrl, itemId, e.blob, e.fileName, e.prefixName);
            }.bind(this));
            return all(uploadDefs).then(function(results) {
              return results;
            });
          }
        }.bind(this));
      }
    };
  });