Ένα δυαδικό αρχείο πρέπει να φτάνει στον πελάτη HTTP ως byte. Η ανάγνωσή του με αναγνώστη κειμένου και η εκ νέου κωδικοποίηση της προκύπτουσας συμβολοσειράς ως ASCII μπορεί να αντικαταστήσει τιμές πριν ο διαμεσολαβητής παραλάβει οτιδήποτε. Το ότι λειτουργεί ένα μικρό δείγμα κειμένου δεν κάνει αυτή τη διαδρομή ασφαλή για μια εικόνα, αρχείο συμπίεσης ή έγγραφο.

Σε μια υπάρχουσα διαδρομή ανεβάσματος .NET, αντικαταστήστε αυτή τη μετατροπή με μια δυαδική πηγή σώματος:

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

Περάστε το περιεχόμενο μέσα από το διαμορφωμένο ανέβασμα HTTP της εφαρμογής· το απόσπασμα καθορίζει την πηγή του σώματος, ενώ ο υπάρχων πελάτης εξακολουθεί να χειρίζεται τη μέθοδο, τον προορισμό, τον διαμεσολαβητή και τη διάρκεια ζωής.

Αφαιρέστε οποιοδήποτε Content-Length υπολογίστηκε από τον αριθμό χαρακτήρων της παλιάς συμβολοσειράς. Το πεδίο μετρά οκτάδες. Αφήστε τη βιβλιοθήκη HTTP να κατασκευάσει το πλαίσιο από την αναπαράσταση του σώματος αντί να συνδυάσετε έναν αριθμό χαρακτήρων με ένα buffer διαφορετικής κωδικοποίησης.

Για σκόπιμο ανέβασμα κειμένου, επιλέξτε ρητά την κωδικοποίηση και υπολογίστε οποιοδήποτε απαιτούμενο μήκος από τα byte που αποστέλλονται. Αυτή η απόφαση μορφής κειμένου δεν πρέπει να εφαρμόζεται σε αυθαίρετα αρχεία.

Συγκρίνετε το μεταφερόμενο τεχνούργημα με μια αξιόπιστη αναμενόμενη τιμή. Η επιτυχία HTTP επιβεβαιώνει ότι μια λειτουργία ανεβάσματος ολοκληρώθηκε σε εκείνο το επίπεδο· δεν μπορεί να δείξει ότι μια προηγούμενη μετατροπή κειμένου διατήρησε τα αρχικά byte.

Σχετικά άρθρα