Strongloop文件上传 - 同时上传期间冲突的容器

时间:2016-07-04 13:15:04

标签: node.js file-upload strongloop

我正在开发一个具有多个图片上传功能的strongloop应用程序。我使用 loopback component-storage 来使用REST API上传文件。

容器是动态的(客户端应用程序发送唯一的容器ID),并且我在“远程退出”之前为容器创建文件夹。使用容器ID。此外,我有一些应用程序逻辑内部&after;远离'。

最近我遇到一个奇怪的问题,即在一个容器下上传的图片会被另一个图片上传覆盖,这会在不同的容器ID下发生。这是一个罕见的问题,我只遇到过两次。

beforeRemote方法:

MyModel.beforeRemote('upload', function (ctx, res, callback) {
    var arrStr = ctx.req.url.split(/[//]/);
    var mkdirp = require('mkdirp');
    var path = '../storage/images/' + arrStr[1];  //arrStr[1] is the container folder
    mkdirp(path, function (err) {
        console.log(err);
    });

    callback();
});

afterRemote方法:

MyModel.afterRemote('upload', function (ctx, res, callback) {
      var mainLogics = function(){
           var file = res.result.files.file[0];
           if (file != undefined) {
              if (file != null) {
                     var myData = res.result.fields.data[0];
                     if (myData != undefined) {
                           //My application logic
                           callback();
                      }
                      else
                          callback();
               }
               else
                   callback();
             }
          }
          mainLogics();   
      });

在这一系列步骤中发生了图像冲突。图像大小超过500 KB,图像集包含2个图像。

  1. ClientA开始上传图像集-1(上传A1)
  2. ClientB开始上传图像集-1(上传B1)
  3. ClientA开始上传图像集-2(上传A2)
  4. B1上传完成 - 图像保存正确
  5. A2上传完成 - 缺少一张图片
  6. A1上传完成 - 一张图片被B1 的一张图片覆盖,部分保存在光盘中。
  7. 注意:客户端A的互联网连接较差,而客户端B的互联网连接水平适中。

    我重新检查了客户发送的ID,它们是唯一的。我尝试按照上面的相同步骤重新创建它但失败了。

    我想知道当上传并行时,图像是如何被其他上传覆盖的。我是Strongloop的新手,如果有人能给我一个解决这个问题原因的线索,我真的很感激。

    以下是我的版本:

    • NodeJS:6.0.0
    • loopback:2.18.0
    • loopback-component-storage:1.4.0

0 个答案:

没有答案