Ένα υποθετικό report.xlsx είναι 8 KB και ανοίγει ως σελίδα σύνδεσης. Το πρόγραμμα αποθήκευσε επιτυχώς ένα αρχείο, αλλά δεν απέκτησε ποτέ το επιδιωκόμενο υπολογιστικό φύλλο. Το όνομα αρχείου επιλέγεται τοπικά· δεν αποτελεί απόδειξη για το τι έφτασε.

Κάντε την αποδοχή ξεχωριστό βήμα πριν τη δημοσίευση της προσωρινής λήψης:

  1. Απαιτήστε επιτυχή μεταφορά και την αναμενόμενη κατάσταση απόκρισης. Διατηρήστε το σφάλμα αντί να θεωρείτε πλήρη τα byte που γράφτηκαν πριν από αυτό.
  2. Συγκρίνετε το περιεχόμενο με τον αναμενόμενο τύπο αρχείου. Μια σελίδα σύνδεσης ή φίλτρου μπορεί να επιστρέψει 200. Το Content-Type μπορεί να είναι λάθος, και ένα πρόθεμα HTML σε ένα υπολογιστικό φύλλο είναι προειδοποίηση που χρειάζεται διερεύνηση. Ένα αρχείο που ξεκινά με γραμμή κατάστασης HTTP υποδηλώνει αντίθετα ωμή πλαισίωση απόκρισης.
  3. Επικυρώστε τα πλήρη αποθηκευμένα byte με αξιόπιστο άθροισμα ελέγχου ή υπογραφή, όταν υπάρχει. Μόνο αφού περάσουν οι απαιτούμενοι έλεγχοι θα πρέπει η εφαρμογή να δημοσιεύσει ή να χρησιμοποιήσει το τελικό αρχείο.

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

Προσοχή και στις συγκρίσεις μεγέθους. Ένας πελάτης HTTP μπορεί να αποκωδικοποιεί την κωδικοποίηση περιεχομένου κατά την ανάγνωση, οπότε το μήκος του τελικού αρχείου μπορεί εύλογα να διαφέρει από μια κεφαλίδα που περιγράφει το κωδικοποιημένο μήνυμα. Συγκρίνετε την προσδοκία του εκδότη με την αναπαράσταση που αποθηκεύτηκε πραγματικά.

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

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