загруженный zip-файл с использованием кода С# недействителен

У меня есть сервер Dot Net MVC, на котором хранятся zip-файлы. Я могу успешно загрузить эти zip-файлы, если нажму на гиперссылку. Однако, если я пытаюсь загрузить zip-файл с помощью DownloadFile WebClient, я могу загрузить zip-файл и получаю сообщение об ошибке «Windows не удается открыть папку, сжатая zip-папка недействительна».

Код на стороне сервера:

public FilePathResult DownloadFile(int id)
{      
       string resultsdir = AppDomain.CurrentDomain.BaseDirectory + "Data\\ResultsDir\\" + res.RequestId.ToString();
       string downloadFile = System.IO.Path.GetFileName(res.DownloadPath);
       string zipPath = System.IO.Path.Combine(resultsdir, downloadFile);
       return File(zipPath, "application/zip", downloadFile);
}

Клиентская сторона. Я использую Webclient для загрузки этого файла.

WebClient wc = new WebClient();
wc.DownloadFile("http://servername/Results/DownloadFile/853", "localspkgfile.zip");

Если я загружаю файл, щелкнув гиперссылку в браузере, размер файла составляет 2,9 МБ. Однако при использовании веб-клиента размер файла составляет 5 КБ. Похоже, WebClient не может правильно загрузить файл. Может ли кто-нибудь предложить мне способ скачать файл.


person sunny days    schedule 10.09.2012    source источник


Ответы (2)


Я не знаю, что не так с вашим кодом, но тот 5-килобайтный файл, который вы загружаете, почти наверняка является HTML-страницей с ошибкой, которая может содержать информацию, такую ​​как трассировка стека, которая поможет вам понять, что происходит не так. Измените его расширение на .html и откройте его в браузере.

person Jon Rimmer    schedule 10.09.2012

У меня также была эта проблема, но я нашел простое решение: я хочу загрузить этот Zip-файл с "http://sodco.ir/Choobkhat/Update/update.zip" и извлеките их. но веб-клиент не загружает его.

Мое решение:

Шаг 1: измените имя моего файла с "D:\update.zip" на "D:\update.zi" webClient.DownloadFileAsync("http://sodco.ir/Choobkhat/Update/update.zip", "D:\\update.zi);

Начнется загрузка. После завершения загрузки:

Шаг 2. Переименуйте update.zi в update.zip.

File.Move("update.zi", "update.zip");

Шаг 3. извлеките их

ZipFile.ExtractToDirectory(Application.StartupPath + "\\update.zip", Application.StartupPath);
person Reza Hadipour    schedule 02.02.2017