Submitting multiple files to ASP.NET controller accepting an ICollection

前端 未结 1 1205
我在风中等你
我在风中等你 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<IFormFile> (or List<IFormFile>) 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<IActionResult> Post(List<IFormFile> 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)
提交回复
热议问题