Кажется, вы делаете простую ошибку при создании массива, и это, вероятно, коренится в том факте, что массивы начинаются с нуля (то есть позиции начинаются с 0).
Во-первых, чтобы сделать это предельно ясным, рассмотрим массив, который должен содержать три элемента, {A, B, C}
. Когда вы сохраняете их в массиве, A
будет иметь индекс 0
, B
будет иметь 1
, а C
будет иметь значение 2
.
Другими словами, последний элемент будет в позиции length - 1
. Сама длина все равно будет 3.
Примените это к вашей ситуации, и вы поймете, что проблема заключается здесь:
var imgBytes = new Byte[file.ContentLength - 1];
Удалите -1
и все должно работать.
Если бы вам нужно было читать непосредственно с последнего байта в вашем массиве, с другой стороны, вы бы использовали file.ContentLength - 1
для доступа к нему.