Отправка байта [], представляющего zip-файл из одного API в другой - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь отправить zip-файл, который я создаю в одном API (давайте назовем это «API 1»), другому (иначе «API 2»).

Первоначально я пытался просто отправить байт [] как ответ в API 1, но при обращении к ответу в API 2 байт [] имел другой размер, и файл был поврежден. Затем я попытался преобразовать byte [] в API 1 в строку base64, а затем декодировать в API 2, но понял, что строки не совпадают, и снова файл поврежден.

Вот мой кодв настоящее время он стоит ...

Код API 1

[HttpPost]
public IActionResult BuildZipFile(Custom myObject)
{
    CODE HERE WHICH GENERATES ZIP FILE
    byte[] zipFile = System.IO.File.ReadAllBytes(ZIP FILE PATH);
    return Ok(Convert.ToBase64String(zipFile));
}

Код API 2

[HttpPost]
public IActionResult RetrieveZipFile(Custom myObject)
{
    RestClient client = new RestClient(@"https://localhost:44323/api/ProcessBuild");
    RestRequest request = new RestRequest(Method.POST);
    request.AddHeader("content-type", "application/json");
    request.AddParameter("application/json", JsonConvert.SerializeObject(myObject), ParameterType.RequestBody);
    var response = client.Execute(request);
    byte[] retrievedZipFile = Convert.FromBase64String(response.Content);
    return File(retrievedZipFile, "application/zip", process.Name + ".zip");
}

В настоящее время возвращается ZIP-файл, который поврежден. Любая помощь по этому вопросу будет принята с благодарностью!

1 Ответ

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

Я не уверен насчет типа пантомимы. Это должно работать нормально. Я не знаком с RestSharp.

using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
    {
        return File(System.IO.File.OpenRead(filePath), "application/zip");
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...