代码之家  ›  专栏  ›  技术社区  ›  user1563677

Ng文件上载:将数组发送到Web Api

  •  0
  • user1563677  · 技术社区  · 7 年前

    我有一个ng文件上传,这是用来上传文件。当upload方法被调用时,我想把一个额外的数组中的一些数据传递给upload方法,然后由该方法在我的webapi上接收。这是我上传的ng文件

    factory.upload = function (file, myArray) {
        var url = '{0}upload'.format(apiPath)
        return Upload.upload({
            url: url,
            arrayKey: '',
            data: { file: file, myArray: myArray}
        }).then(function (res) {
    
            return res;
        });
    };
    

    下面是我的webapi:

      [HttpPost("upload")]
       public async Task<IActionResult> FileUpload(IFormFile file, List<string> myArray)
       {
            //code
       }
    

    最后,这里是一个数组,我正试图通过上传到我的webapi:

      [
       {
         id: "1",
         name: "steve"
       },
       {
         id: "2",
         name: "adam"
       }
      ]
    

     arrayKey: '' 
    

    但还是不行。有什么意见吗?

    ---更新---

    我创建了一个字符串数组:

    var cars = ["steve", "adam", "ronnie"];
    

    并将我的api更新为:

    List<ArrayItem> myArray
    

      var myArray= [];
      for (var i = 0; i < myJson.length; i++) {
       myArray.push({
        id: myJson[i].id,
        name: myJson[i].name,
      });                                        
     }  
    

    Array(2)
    0:{id: "1", name: "steve"}
    1:{id: "2", name: "adam"}
    

    这里少了什么?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Edward    7 年前

    要传递对象数组,需要定义list对象以接受参数。

    1. 阵列项目 Id Name

      public class ArrayItem
      {
      public int Id { get; set; }
      public string Name { get; set; }
      }
      
    2. 更改操作

          public async Task<IActionResult> FileUpload(IFormFile file, List<ArrayItem> myArray)
      {
          return Ok();
      }          
      

    更新

    arrayKey: '[]' ,请尝试以下代码:

    app.service('crudService', function ($http, Upload) {
    
    var baseUrl = 'http://localhost:50829';
    
    this.uploadFile = function (file, array) {
    
        return Upload.upload({
            url: baseUrl + "/api/books/file/upload",
            //arrayKey: '[]',
            data: { file: file, array: array },
            headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
        }).then(function (res) {
    
            return res;
        }, function (err) {
    
            throw err;
        });
    }; 
    });