Бінарний файл має надходити до HTTP-клієнта як байти. Читання його текстовим читачем і повторне кодування отриманого рядка в ASCII може замінити значення ще до того, як проксі щось отримає. Працездатність невеликого текстового зразка не робить цей шлях безпечним для зображення, архіву чи документа.

У наявному шляху вивантаження .NET замініть це перетворення бінарним джерелом тіла:

using var file = File.OpenRead(path);
using var content = new StreamContent(file);

Передайте вміст через налаштоване в застосунку HTTP-вивантаження; фрагмент установлює джерело тіла, тоді як наявний клієнт і далі відповідає за метод, призначення, проксі та керування часом життя.

Видаліть будь-який Content-Length, обчислений із кількості символів старого рядка. Це поле вимірює октети. Дозвольте HTTP-бібліотеці побудувати кадрування з подання тіла замість того, щоб поєднувати кількість символів із буфером в іншому кодуванні.

Для навмисного текстового вивантаження виберіть кодування явно й виведіть потрібну довжину з надісланих байтів. Це рішення про текстовий формат не слід застосовувати до довільних файлів.

Порівняйте переданий файл із довіреним очікуваним значенням. Успіх HTTP підтверджує, що операція вивантаження завершилася на цьому рівні; він не може показати, що попереднє текстове перетворення зберегло початкові байти.

Схожі статті