Submitting multiple files to ASP.NET controller accepting an ICollection

前端 未结 1 1210
我在风中等你
我在风中等你 2021-01-02 12:01

In my ASP.NET Core backend, I have a controller function that looks like this:

[HttpPost]
[Route(\"documents/upload\")]
public async Task

        
1条回答
  •  灰色年华
    2021-01-02 12:37

    Reference Uploading multiple files at once - with Fetch

    uploadDocuments(endPoint, files) {
        var postSettings = {
            method: 'POST',
            credentials: 'include',
            mode: 'cors'
        };
        var data = new FormData();
        if(files.length > 1) {
            for(var x = 0; x < files.length; x++) {
                data.append('file' + x, files.item(x));    
            }
        } else {
            data.append('files', files);   
        }
        postSettings.body = data;
    
        return fetch(endPoint + '/documents/upload', postSettings);
    }
    

    Reference Uploading small files with model binding

    When uploading files using model binding and the IFormFile interface, the action method can accept either a single IFormFile or an IEnumerable (or List) representing several files. The following example loops through one or more uploaded files, saves them to the local file system, and returns the total number and size of files uploaded.

    [HttpPost]
    [Route("documents/upload")]
    public async Task Post(List files)
    {
        long size = files.Sum(f => f.Length);
    
        // full path to file in temp location
        var filePath = Path.GetTempFileName();
    
        foreach (var formFile in files)
        {
            if (formFile.Length > 0)
            {
                using (var stream = new FileStream(filePath, FileMode.Create))
                {
                    await formFile.CopyToAsync(stream);
                }
            }
        }
    
        // process uploaded files
        // Don't rely on or trust the FileName property without validation.
    
        return Ok(new { count = files.Count, size, filePath});
    }
    

    0 讨论(0)
提交回复
热议问题