метод axios при вызове post не передает массив строк, неправильно передает его - React - PullRequest
0 голосов
/ 12 октября 2019

Я вызываю метод api post с использованием axios в моем приложении React, метод post имеет два параметра, 1 параметр как просто строку и 2-й параметр - это массив строк, первый параметр слева, который является просто строкой, передается вAPI правильно, но массив строк не передается, может кто-нибудь, пожалуйста, проверьте и дайте мне знать, что в нем не так? Заранее спасибо.

    handleDownload = (e) => {
    e.preventDefault();

    var formData = new FormData();
    formData.append('communityname', this.state.selectedCommunity);
    formData.append('files', this.state.files);

    axios({
        method: 'post',
        url: clientConfiguration['filesApi.local'],
        data: formData
    });
}

И мой метод API выглядит следующим образом:

        [HttpPost]
    public FileContentResult Post([FromForm] string communityName, [FromForm] string[] files) 
    {           
        string rootPath = Configuration.GetValue<string>("ROOT_PATH");
        string communityPath = rootPath + "\\" + communityName;

        byte[] theZipFile = null;

        using (MemoryStream zipStream = new MemoryStream())
        {
            using (ZipArchive zip = new ZipArchive(zipStream, ZipArchiveMode.Create, true))
            {
                foreach (string attachment in files)
                {
                    var zipEntry = zip.CreateEntry(attachment);

                    using (FileStream fileStream = new FileStream(communityPath + "\\" + attachment, FileMode.Open))
                    using (Stream entryStream = zipEntry.Open())
                    {
                        fileStream.CopyTo(entryStream);
                    }
                }
            }
            theZipFile = zipStream.ToArray();
        }

        return File(theZipFile, "application/zip", communityName + ".zip");
    }

, и я получаю значение параметра files, как показано ниже, клиентский скрипт публикует файлы как одинСтрока в виде «[объект объекта], [объект объекта], [объект объекта], [объект объекта]» вместо отдельной строки массивов, любая помощь, пожалуйста, спасибо заранее.

1 Ответ

0 голосов
/ 12 октября 2019

Может быть, это могло бы работать лучше

    let url = clientConfiguration['filesApi.local'];
    let data = formData
    axios.post(url, {data});

Я надеюсь, что это работает

...