Θέλω να κάνω post μια html form με ένα ένα αρχείο επάνω. Ο κώδικας που έχω είναι πάνω κάτω αυτός
http://www.briangrinstead.com/blog/multipart-form-post-in-c. Υπάρχει σε πολλές μικρο διαφοροποιημένες εκδόσεις στο web. H εφαρμογή μου έπαιζε μια χαρά μέχρι που κάποια στιγμή πήγαμε να ανεβάσουμε ένα πιο μεγάλο αρχείο. Τα αρχεία είναι Pdf. Δεν ξέρω αν φταίει το μέγεθος, αλλά το αναφέρω. Για να ποστάρω την φόρμα τα φέρνω σε μια μορφή.
------WebKitFormBoundaryihfu0Y4sW1HMnVCX
Content-Disposition: form-data; name="field_1"
μπλα
------WebKitFormBoundaryihfu0Y4sW1HMnVCX
Content-Disposition: form-data; name="field_file"; filename="c960b55e-bdbb-46fe-9d40-d6f5ed85655a.pdf";
Content-Type: application/pdf
%PDF-1.4
%�쏢
5 0 obj
<</Length 6 0 R/Filter /FlateDecode>>
stream
mpla mpla mpla
(κάποια στιγμή τελειώνει το αρχείο και συνεχίζουν τα πεδία)
------WebKitFormBoundaryihfu0Y4sW1HMnVCX
Content-Disposition: form-data; name="field_2"
μπλα2
ο κώδικας για να το φτιάξω είναι ο παρακάτω
// Add just the first part of this param, since we will write the file data directly to the Stream
string header = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"{1}\"; filename=\"{2}\";\r\nContent-Type: {3}\r\n\r\n",
boundary,
param.Key,
fileToUpload.FileName ?? param.Key,
fileToUpload.ContentType ?? "application/octet-stream");
formDataStream.Write(encoding.GetBytes(header), 0, header.Length);
// Write the file data directly to the Stream, rather than serializing it to a string.
formDataStream.Write(fileToUpload.File, 0, fileToUpload.File.Length);
// Thanks to feedback from commenters, add a CRLF to allow multiple files to be uploaded
formDataStream.Write(encoding.GetBytes("\r\n"), 0, 2
Τώρα όταν βάζω το πιο μεγάλο pdf τα πεδία μετά το αρχείο τα τρώει (Δηλαδή πρέπει να μην κλείνει κάπου το αρχείο και μπερδεύονται με τα άλλα στοιχεία). Δοκίμασα να ξανακάνω 3-4 φορές το pdf μήπως ήταν κατεστραμμένο το αρχείο, αλλά τίποτα.