Файл ZIP, загруженный с помощью пакета сохранения файла, не может правильно распаковать с точными именами файлов - PullRequest
0 голосов
/ 14 октября 2019

Привет, у меня есть приложение React, которое вызывает api при нажатии кнопки загрузки, при нажатии кнопки значения публикуются правильно, и api возвращает zip-файл, загружаемый файл, а также zip-файл, но проблемаэто когда я пытаюсь разархивировать этот файл, он не распаковывается должным образом, он говорит, что Windows не может разархивировать файлы, мой код API такой, как показано ниже, и

        [HttpPost]
    public FileContentResult Post([FromForm] string communityName, [FromForm] string files)
    {

        var removedInvalidCharsFromFileName = removeInvalidCharsFromFileName(files);

        var tFiles = removedInvalidCharsFromFileName.Split(',');
        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 tFiles)
                {
                    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");
    }

И мой метод загрузки компонентов React такой, как ниже:

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

    var formData = new FormData();
    formData.append('communityname', this.state.selectedCommunity);
    formData.append('files', JSON.stringify(this.state['checkedFiles']));

    let url = clientConfiguration['filesApi.local'];

    axios({
        method: 'post',
        url: url,
        data: formData
    })
    .then(res => {
        console.log(res.data);                
        var binaryData = [];
        binaryData.push(res.data);
        const src = window.URL.createObjectURL(new Blob(binaryData, { type: "application/zip" }))

        var fileName = `${this.state['selectedCommunity']}.zip`;
        saveAs(src, fileName);
    });  
}

Появляется сообщение об ошибке: «Невозможно открыть файл в виде zip-архива, не выполняется архивирование, предупреждение об ошибке заголовков». Любая помощь, пожалуйста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...