Ich versuche Binärdaten (eine Excel XLS-Datei) in Daten zu konvertieren, die ich als Teil einer HTTP-Multi-Teil-Anfrage übergeben kann (der Code zum Generieren der Multi-Teil Anfragen arbeitet seit einiger Zeit mit String-Daten, so denke ich, ist es die Codierung der binären Daten, die das Problem ist, nicht wie die Anfrage gebildet wird).Konvertieren von binären (Excel) Daten in String für HTTP-Anfrage
Für ref die ersten sieben Zeichen der Excel-Datei (wenn Ansicht in Notepad ++) sind:
decimal hex
Ð 208 D0
Ï 207 CF
17 11
à 224 E0
¡ 161 A1
± 177 B1
26 1A
Ich gründe element.BinaryContent
binaryContent = System.IO.File.ReadAllBytes(filePath);
mit der Wenn ich dann
content.Append(Encoding.UTF8.GetString(element.BinaryContent));
verwenden
, um den HTTP-Anforderungsinhalt zu erstellen, der dies gibt (aus dem Direktfenster in VS):
In der hochgeladenen Datei die Steuer Zeichen und die englischen Zeichen korrekt beibehalten, aber andere Zeichen werden falsche Werte umgewandelt.
Wenn ich das nicht gut erkläre, zeigt das Bild unten links die Daten und rechts das Original.
Für ref, wie ich die Anfrage machen, ist mit diesem:
protected static void SetRequestContent(string requestContent, HttpWebRequest request, string contentType)
{
request.ContentType = contentType;
byte[] byteData = UTF8Encoding.UTF8.GetBytes(requestContent);
using (Stream postStream = request.GetRequestStream())
{
postStream.Write(byteData, 0, byteData.Length);
}
}
wo requestContent
korrekt gebildet hat Inhalt mehrteiligen, wie folgt aus:
--------------------------BNDY
Content-Disposition: form-data; name=password
Txxxxx
--------------------------BNDY
Content-Disposition: form-data; name=username
[email protected]
--------------------------BNDY
Content-Disposition: form-data;name=\"FILE\";filename=\"c:/POSTOutput/Upload.xls\"
��\u0011\u0871\u001a�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0>\0\u0003\0��\t\0\u0006\0\0\0\0\0\0\0\0\0\0\0\u0001\0\0\0\u0001\0\0\0\0\0\0\0\0\u0010\0\0\u0002\0\0\0\u0001\0\0\0����\0\0\0\0\0\0\0\0������������ (etc).
Was muss ich tun, um die Daten im Originalformat zu übertragen?
AFAIK, werden mehrteilige chunks normalerweise mit Base64-kodiert – dlatikay