Frage : Pfostenbildakte [binäre Daten] using HttpWebRequest fällt aus.

Ich bin Einfassungproblem, wenn Bildakten als binäre Daten zu einer Webseite bekannt gegeben werden.

If I Pfosten die Formdaten using die Form etikettieren Action=URL und Method= " Pfosten ", I m, welches erforderliche Erfolg result.

http://www.w3.org/1 999/xhtml " >



http://www.babypre/>.au/gatewadictor.comy/api.php " runat= " Bediener " >
image1Data Berühmtheit Identifikation erhält:

image1Data JPEG:  

image2Data Berühmtheit Identifikation:
OR
image2Data JPEG:

transaction_id:

security: >

misc1:

misc2:

misc3:

misc4:








But ein, wenn ich versuche, die Bilddaten using das „HTTPWebRequest“, indem ich die Überschriften bilde, die Daten und die Anhänger zu senden, I m, das fähig ist, die Antwort vom informierten URL zu erhalten, aber die Bilder werden nicht verwandelt. [Das Ziel URL „ http://www.babypredictor. com.au/gat eway/api.php“ empfängt 1 oder 2 Bilder, die wir das Erfolg URL bekannt geben und verwandeln sie in einen einzelnen pic und senden].

Looks I m irgendeinen Fehler in der bildenden HTTP-Mitteilung tuend während Aufgabe zum Ziel URL. Kann jedermann gefallen, mir zu helfen, die Ausgabe darzustellen und ihm Arbeit wie der normale Form-Pfosten zu erhalten.

Attached ist meine Lösung. Sie können mit GEGEN 2008.

I dich öffnen versucht using Brandstifter, um die Pfosten HTTP-rohen Daten auszuprüfen und es sucht fast selben nach FORM-Aufgabe und HTTPWebRequest Aufgabe, aber die Bilder werden nicht für mein späteres verwandelt. Wunsch jemand kann finden, dass die Ausgabe und die Hilfe me.

Here mein Öffentlichkeitslücke HttpUploadFile des HTTPWebRequest Pfosten-Codes Snippet.

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
(Schnur-URL, HttpPostedFile file1, HttpPostedFile file2, Schnur paramName, Schnur contentType, NameValueCollection nvc)
//public leeres HttpUploadFile (Schnur-URL, Schnur file1, Schnur file2, Schnur paramName, Schnur contentType, NameValueCollection nvc)
ist {
//log.Debug (Schnur. Formatieren ( " Uploading {0} {1}“, Akte, URL));
Schnurgrenze = „---------------------------“ + DateTime.Now.Ticks.ToString („x“);
Byte [] boundarybytes = System.Text.Encoding.ASCII.GetBytes (“ \ r \ n--“ + Grenze + „\ r \ n“);

HttpWebRequest wr = (HttpWebRequest) WebRequest.Create (url);
wr.ContentType = „Mehrfach-/Formdaten; boundary=“ + Grenze;
wr. Methode = „PFOSTEN“;
wr.KeepAlive = richten aus;
wr. Bescheinigungen = System.Net.CredentialCache.DefaultCredentials;            
            wr.Referer = URL;

            wr.Annehmen = „Text/xml, Anwendung/xml, application/xhtml+xml, Text/html; q=0.9, text/plain; q=0.8, image/png, */*; q=0.5“;
wr.UserAgent = „Mozilla/4.0 (kompatibel; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705)“;
//wr.Accept = „Bild/GIF, image/x-xbitmap, Bild/JPEG, Bild/pjpeg, application/vnd.ms-excel, Anwendung/Msword, application/x-shockwave-flash, */*“;

Strom rs = wr.GetRequestStream ();

Schnur formitem, Überschrift;

Schnur formdataTemplate = „Inhalt-Einteilung: Formdaten; name= \“ {0} \ „\ r \ n \ r \ n {1}“;
foreach (Schnurschlüssel im nvc. Schlüssel)
{
rs. Schreiben (boundarybytes, 0, boundarybytes. Länge);
formitem = Schnur. Format (formdataTemplate, Schlüssel, nvc [Schlüssel]);
Byte [] formitembytes = System.Text.Encoding.ASCII.GetBytes (formitem);
                rs.Schreiben (formitembytes, 0, formitembytes. Länge);
}

rs. Schreiben (boundarybytes, 0, boundarybytes. Länge);

Schnur headerTemplate = „Inhalt-Einteilung: Formdaten; name= \“ {0} \ „; filename= \“ {1} \ „\ r \ nContent-Type: {2} \ r \ n \ r \ n“;
Überschrift = Schnur. Format (headerTemplate, paramName, file1, contentType);
Byte [] headerbytes = System.Text.Encoding.ASCII.GetBytes (header);
rs. Schreiben (headerbytes, 0, headerbytes. Länge);

Strom file1Stream = file1.InputStream;
//FileStream fileStream = neues FileStream (file1.FileName, FileMode.Open, FileAccess.Read);
Puffer des Bytes [] = neues Byte [4096];
int bytesRead = 0;
während ((bytesRead = file1Stream.Read (Puffer, 0, Puffer. Länge)) ! = 0)
{
Byte [] encodedbuffer = System.Text.Encoding.ASCII.GetBytes (System.Text.ASCIIEncoding.ASCII.GetString (Puffer));
rs. Schreiben (encodedbuffer, 0, bytesRead);
}

//fileStream.Close ();

wenn (file2.FileName! =string. Empty)
{
Überschrift = Schnur. Format (headerTemplate, paramName, file2, contentType);
headerbytes = System.Text.Encoding.ASCII.GetBytes (header);
rs. Schreiben (headerbytes, 0, headerbytes. Länge);

//fileStream = neues FileStream (file2.FileName, FileMode.Open, FileAccess.Read);
Strom file2Stream = file2.InputStream;
bytesRead = 0;
während ((bytesRead = file2Stream.Read (Puffer, 0, Puffer. Länge)) ! = 0)
{
Byte [] encodedbuffer = System.Text.Encoding.ASCII.GetBytes (System.Text.ASCIIEncoding.ASCII.GetString (Puffer));
rs. Schreiben (Puffer, 0, bytesRead);
}
//fileStream.Close ();
}

Anhänger des Bytes [] = System.Text.Encoding.ASCII.GetBytes (“ \ r \ n--“ + Grenze + „--\ r \ n“);
rs. Schreiben (Anhänger, 0, Anhänger. Länge);
rs. Abschluss ();

WebResponse wresp = Null;
try
{
wresp = wr.GetResponse ();
Strom stream2 = wresp.GetResponseStream ();
StreamReader reader2 = neues StreamReader (stream2);
//log.Debug (Schnur. Format (die geladene " Akte, Bedienerantwort: {0}“, reader2.ReadToEnd ()));

Schnurantwort = reader2.ReadToEnd ();

wenn (response.ToLower (). Contains („success“))
{
Schnur ResponseURL = Antwort. Teilkette (response.IndexOf ( " Erfolg: „) + „Erfolg: “. Länge);

Result.Text = Antwort + „


“ + „“;
}
else
Result.Text = Antwort + „
“;
}
Fang (Ausnahme ex)
{
//log.Error („ladende Akte der Störung“, ex);

}
finally
{
wenn (wresp! = Null)
{
wresp. Abschluss ();
wresp = Null;
}
wr = Null;
}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

-Pamboo
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;

using System.IO;
using System.Net;
using System.Text;
using System.Collections;
using System.Collections.Specialized;

using System.Security.Cryptography;
using System.Configuration;

namespace YuuBabies
{

    allgemeines teilweises Kategorie _Default: System.Web.UI.Page
    {   
        privates Schnur secrect_code;

        geschütztes leeres Page_Load (Gegenstandabsender, EventArgs e)
        {
            wenn (! IsPostBack)
            {
                secrect_code = ConfigurationManager.AppSettings [„Secret_code“];
                Gelegentliches gelegentliches = neues gelegentliches ();
                int randomNo = gelegentlich. Zunächst (99999);

                transaction_id. Text = (randomNo < 1000)? (1000 + randomNo) .ToString (): randomNo.ToString ();
                Sicherheit. Text = GetMD5Hash („yuz00b3byP“ + transaction_id. Text);

            }
        }

        allgemeine Schnur GetMD5Hash (originalString Schnur)
        {
            Byte [] textBytes = System.Text.Encoding.Default.GetBytes (originalString);
            Versuch
            {
                System.Security.Cryptography.MD5CryptoServiceProvider cryptHandler;
                cryptHandler = neues System.Security.Cryptography.MD5CryptoServiceProvider ();
                Durcheinander des Bytes [] = cryptHandler.ComputeHash (textBytes);
                Schnur rösten = "";
                foreach (Byte a im Durcheinander)
                {
                    wenn (a < 16)
                        += „0“ rösten + a.ToString („x“);
                    sonst
                        += a.ToString („x“) rösten;
                }
                Rückkehr röstet;
            }
            Fang
            {
                Wurf;
            }

        }

        geschütztes leeres Submit_Click (Gegenstandabsender, EventArgs e)
        {
            HttpPostedFile file1 = image1Data.PostedFile;
            HttpPostedFile file2 = image2Data.PostedFile;

            wenn (file1.FileName! =string. Leer)
            {
                NameValueCollection nvc = neues NameValueCollection ();
                nvc. Hinzufügen („image1DataID“, image1DataID.Text);
                nvc. Hinzufügen („image2DataID“, image2DataID.Text);
                nvc. Hinzufügen („transaction_id“, transaction_id. Text);
                nvc. Hinzufügen („Sicherheit“, Sicherheit. Text);
                nvc. Hinzufügen („misc1“, misc1.Text);
                nvc. Hinzufügen („misc2“, misc2.Text);
                nvc. Hinzufügen („misc3“, misc3.Text);
                nvc. Hinzufügen („misc4“, misc4.Text);
                     
                //HttpUploadFile („http://www.babypredictor.com.au/gateway/api.php“, imagefile1FullPathName.Value, imagefile2FullPathName.Value, „Akte“, „Bild/JPEG“, nvc);
                HttpUploadFile („http://www.babypredictor.com.au/gateway/api.php“, file1, file2, „Akte“, „Bild/JPEG“, nvc);

            }

        }
        Öffentlichkeit leeres HttpUploadFile (Schnur-URL, HttpPostedFile file1, HttpPostedFile file2, Schnur paramName, Schnur contentType, NameValueCollection nvc)     
        //public leeres HttpUploadFile (Schnur-URL, Schnur file1, Schnur file2, Schnur paramName, Schnur contentType, NameValueCollection nvc)
        {         
            //log.Debug (Schnur. („, ladend {0} zu {1}“, Akte, URL) formatieren);
            Grenze aufreihen = „---------------------------“ + DateTime.Now.Ticks.ToString („x“);
            Byte [] boundarybytes = System.Text.Encoding.ASCII.GetBytes („\ r \ n--“ + Grenze + „\ r \ n“);

            HttpWebRequest wr = (HttpWebRequest) WebRequest.Create (URL);
            wr.ContentType = „Mehrfach-/Formdaten; boundary=“ + Grenze;
            wr. Methode = „PFOSTEN“;
            wr.KeepAlive = richten aus;
            wr. Bescheinigungen = System.Net.CredentialCache.DefaultCredentials;            
            wr. Referer = URL;

            wr. Annehmen = „Text/xml, Anwendung/xml, Anwendung/xhtml+xml, Text/HTML; q=0.9, Text/normales; q=0.8, Bild/png, */*; q=0.5“;
            wr.UserAgent = „Mozilla/4.0 (kompatibel; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705)“;
            //wr.Accept = „Bild/GIF, image/x-xbitmap, Bild/JPEG, Bild/pjpeg, Anwendung/vnd.ms-excel, Anwendung/Msword, application/x-shockwave-flash, */*“;

            Strom rs = wr.GetRequestStream ();

            Schnur formitem, Überschrift;

            Schnur formdataTemplate = „Inhalt-Einteilung: Formdaten; name= \“ {0} \ „\ r \ n \ r \ n {1}“;
            foreach (Schnurschlüssel im nvc. Schlüssel)
            {
                rs. Schreiben (boundarybytes, 0, boundarybytes. Länge);
                formitem = Schnur. Format (formdataTemplate, Schlüssel, nvc [Schlüssel]);
                Byte [] formitembytes = System.Text.Encoding.ASCII.GetBytes (formitem);
                rs. Schreiben (formitembytes, 0, formitembytes. Länge);
            }

            rs. Schreiben (boundarybytes, 0, boundarybytes. Länge);
          
            Schnur headerTemplate = „Inhalt-Einteilung: Formdaten; name= \“ {0} \ „; filename= \“ {1} \ „\ r \ NContentArt: {2} \ r \ n \ r \ n“;
            Überschrift = Schnur. Format (headerTemplate, paramName, file1, contentType);
            Byte [] headerbytes = System.Text.Encoding.ASCII.GetBytes (Überschrift);
            rs. Schreiben (headerbytes, 0, headerbytes. Länge);

            Strom file1Stream = file1.InputStream;
            //FileStream fileStream = neues FileStream (file1.FileName, FileMode.Open, FileAccess.Read);
            Puffer des Bytes [] = neues Byte [4096];
            int bytesRead = 0;
            während ((bytesRead = file1Stream.Read (Puffer, 0, dämpfen ab. Länge)) ! = 0)
            {
                Byte [] encodedbuffer = System.Text.Encoding.ASCII.GetBytes (System.Text.ASCIIEncoding.ASCII.GetString (Puffer));
                rs. Schreiben (encodedbuffer, 0, bytesRead);
            }
            
            //fileStream.Close ();

            wenn (file2.FileName! =string. Leer)
            {
                Überschrift = Schnur. Format (headerTemplate, paramName, file2, contentType);
                headerbytes = System.Text.Encoding.ASCII.GetBytes (Überschrift);
                rs. Schreiben (headerbytes, 0, headerbytes. Länge);

                //fileStream = neues FileStream (file2.FileName, FileMode.Open, FileAccess.Read);
                Strom file2Stream = file2.InputStream;
                bytesRead = 0;
                während ((bytesRead = file2Stream.Read (Puffer, 0, dämpfen ab. Länge)) ! = 0)
                {
                    Byte [] encodedbuffer = System.Text.Encoding.ASCII.GetBytes (System.Text.ASCIIEncoding.ASCII.GetString (Puffer));
                    rs. Schreiben (Puffer, 0, bytesRead);
                }
                //fileStream.Close ();
            }

            Anhänger des Bytes [] = System.Text.Encoding.ASCII.GetBytes („\ r \ n--“ + Grenze + „--\ r \ n“);
            rs. Schreiben (Anhänger, 0, Anhänger. Länge);
            rs. Abschluss ();

            WebResponse wresp = Null;
            Versuch
            {
                wresp = wr.GetResponse ();
                Strom stream2 = wresp.GetResponseStream ();
                StreamReader reader2 = neues StreamReader (stream2);
                //log.Debug (Schnur. Format („die geladene Akte, Bedienerantwort ist: {0}“, reader2.ReadToEnd ()));

                Schnurantwort = reader2.ReadToEnd ();

                wenn (response.ToLower (). Enthält („Erfolg“))
                {
                    Schnur ResponseURL = Antwort. Teilkette (response.IndexOf („Erfolg: ") + „Erfolg: “. Länge);

                    Result.Text = Antwort + „


“ + „“; } sonst Result.Text = Antwort + „
“; } Fang (Ausnahme ex) { //log.Error („ladende Akte der Störung“, ex); } schließlich { wenn (wresp! = Null) { wresp. Abschluss (); wresp = Null; } wr = Null; } } } }

Antwort : Pfostenbildakte [binäre Daten] using HttpWebRequest fällt aus.

Es dauert einige Zeit, Ihren Code zu wiederholen, so mittlerweile ich wurde Ersatzzeit, Ihren Code auszuwerten, um Sie zu unterstützen, warum nicht Versuch etwas Heraus-vonkasten, der Ihre sofortige Notwendigkeit entsprechen kann. Einen Blick am folgenden URL bitte haben und das atta herunterladen

http://aspnetupload.com/Upload-File-POST-HttpWebRequest-WebClient-RFC-1867.aspx

und den Code herunterladen, der im Artikel von hier erwähnt: http://aspnetupload.com/Download-Source.aspx

Weitere Lösungen  
 
programming4us programming4us