Pytanie : Poczta wizerunek kartoteka [Binarny Dane] using HttpWebRequest nie udać się.

I stawiać czoło problem w wizerunek kartoteka jako binarny dane webpage.

If I wysyłać the Formularzowy dane using the Formularzowy etykietka Action=URL i Method= " Poczta ", I m the wymagany sukces result.

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



http://www.babypre dictor.com.au/gateway/api.php " runat= " serwer " >
image1Data Sława ID:

image1Data JPEG:  

image2Data Sława ID:
OR
image2Data JPEG:

transaction_id:

security: >

misc1:

misc2:

misc3:

misc4:








But, jeżeli I próbować the wizerunek dane using the "HTTPWebRequest" the chodnikowiec, dane i przyczepa, I m sprawnie the odpowiedź od the wysłany URL, ale the wizerunek przekształcać się. [The cel URL " http://www.babypredictor. com.au/gat eway/api.php" otrzymywać (1) lub 2 wizerunek my wysyłać i przekształcać się w pojedynczy pic i wysyłać the sukces URL].

Looks I m niektóre błąd w the HTTP wiadomość podczas gdy przeniesienie the cel URL. Móc poczta pomagać the zagadnienie i ono praca jak the normalny Formularzowy Poczta.

Attached być mój rozwiązanie. Ty móc używać VS 2008.

I próbować using Firebug debug the poczta HTTP surowy dane i ono patrzeć prawie patrzeć dla oba FORMULARZOWY przeniesienie i HTTPWebRequest Przeniesienie, ale the wizerunek przekształcać się dla mój opóźniony. Życzenie sznurek móc the zagadnienie i pomoc me.

Here być mój HTTPWebRequest Poczta Kod Snippet.

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
jawny kawitacyjny HttpUploadFile (smyczkowy url, HttpPostedFile file1, HttpPostedFile file2, smyczkowy paramName, smyczkowy contentType, NameValueCollection nvc)
//public kawitacyjny HttpUploadFile (smyczkowy url, smyczkowy file1, smyczkowy file2, smyczkowy paramName, smyczkowy contentType, NameValueCollection nvc)
{
//log.Debug (sznurek. Format ( " Uploading {(0)} {(1)}", kartoteka, url));
smyczkowy granica = "---------------------------" + DateTime.Now.Ticks.ToString ("x");
bajt [] boundarybytes = System.Text.Encoding.ASCII.GetBytes (" \ r \ n--" + granica + "\ r \ n");

HttpWebRequest wr = (HttpWebRequest) WebRequest.Create (url);
wr.ContentType = "dane/tworzyć-dane; boundary=" + granica;
wr. Metoda = "POCZTA";
wr.KeepAlive = true;
wr. Referencje = System.Net.CredentialCache.DefaultCredentials;            
            wr.Referer = url;

            wr.Akceptować = "tekst/xml, zastosowanie/xml, application/xhtml+xml, tekst/html; q=0.9, text/plain; q=0.8, image/png, */*; q=0.5";
wr.UserAgent = "Mozilla/4.0 (zgodny; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705)";
//wr.Accept = "wizerunek/gif, image/x-xbitmap, wizerunek/jpeg, wizerunek/pjpeg, application/vnd.ms-excel, zastosowanie/msword, application/x-shockwave-flash, */*";

Strumień rs = wr.GetRequestStream ();

smyczkowy formitem, chodnikowiec;

smyczkowy formdataTemplate = "Zadawalać-Usposobienie: tworzyć-dane; name= \" {(0)} \ "\ r \ n \ r \ n {(1)}";
foreach (smyczkowy klucz w nvc. Klucz)
{
rs. Pisać (boundarybytes, (0), boundarybytes. Długość);
formitem = sznurek. Format (formdataTemplate, klucz, nvc [klucz]);
bajt [] formitembytes = System.Text.Encoding.ASCII.GetBytes (formitem);
                rs.Pisać (formitembytes, (0), formitembytes. Długość);
}

rs. Pisać (boundarybytes, (0), boundarybytes. Długość);

smyczkowy headerTemplate = "Zadawalać-Usposobienie: tworzyć-dane; name= \" {(0)} \ "; filename= \" {(1)} \ "\ r \ nContent-Type: {2} \ r \ n \ r \ n";
chodnikowiec = sznurek. Format (headerTemplate, paramName, file1, contentType);
bajt [] headerbytes = System.Text.Encoding.ASCII.GetBytes (header);
rs. Pisać (headerbytes, (0), headerbytes. Długość);

Strumień file1Stream = file1.InputStream;
//FileStream fileStream = nowy FileStream (file1.FileName, FileMode.Open, FileAccess.Read);
bajt [] odbojnica = nowy bajt [4096];
int bytesRead = (0);
podczas gdy ((bytesRead = file1Stream.Read (odbojnica, (0), odbojnica. Długość)) ! = (0))
{
bajt [] encodedbuffer = System.Text.Encoding.ASCII.GetBytes (System.Text.ASCIIEncoding.ASCII.GetString (odbojnica));
rs. Pisać (encodedbuffer, (0), bytesRead);
}

//fileStream.Close ();

jeżeli (file2.FileName! =string. Empty)
{
chodnikowiec = sznurek. Format (headerTemplate, paramName, file2, contentType);
headerbytes = System.Text.Encoding.ASCII.GetBytes (header);
rs. Pisać (headerbytes, (0), headerbytes. Długość);

//fileStream = nowy FileStream (file2.FileName, FileMode.Open, FileAccess.Read);
Strumień file2Stream = file2.InputStream;
bytesRead = (0);
podczas gdy ((bytesRead = file2Stream.Read (odbojnica, (0), odbojnica. Długość)) ! = (0))
{
bajt [] encodedbuffer = System.Text.Encoding.ASCII.GetBytes (System.Text.ASCIIEncoding.ASCII.GetString (odbojnica));
rs. Pisać (odbojnica, (0), bytesRead);
}
//fileStream.Close ();
}

bajt [] przyczepa = System.Text.Encoding.ASCII.GetBytes (" \ r \ n--" + granica + "--\ r \ n");
rs. Pisać (przyczepa, (0), przyczepa. Długość);
rs. Zakończenie ();

WebResponse wresp = null;
try
{
wresp = wr.GetResponse ();
Strumień stream2 = wresp.GetResponseStream ();
StreamReader reader2 = nowy StreamReader (stream2);
//log.Debug (sznurek. Format ( " Kartoteka być, serwer odpowiedź być: {(0)}", reader2.ReadToEnd ()));

smyczkowy odpowiedź = reader2.ReadToEnd ();

jeżeli (response.ToLower (). Contains ("success"))
{
smyczkowy ResponseURL = odpowiedź. Substring (response.IndexOf ( " sukces: ") + "sukces: ". Długość);

Result.Text = odpowiedź + "


" + "";
}
else
Result.Text = odpowiedź + "
";
}
chwyt (Wyjątek kartoteka)
{
//log.Error ("Błąd uploading kartoteka", kartoteka);

}
finally
{
jeżeli (wresp! = null)
{
wresp. Zakończenie ();
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:
36:
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
{

    jawny częściowy klasowy _Default: System.Web.UI.Page
    {   
        intymny smyczkowy secrect_code;

        ochraniać kawitacyjny Page_Load (przedmiot nadawca, EventArgs e)
        {
            jeżeli (! IsPostBack)
            {
                secrect_code = ConfigurationManager.AppSettings ["Secret_code"];
                Przypadkowy przypadkowy = nowy Przypadkowy ();
                int randomNo = przypadkowy. Następnie (99999);

                transaction_id. Tekst = (randomNo < 1000)? (1000 + randomNo) .ToString (): randomNo.ToString ();
                ochrona. Tekst = GetMD5Hash ("yuz00b3byP" + transaction_id. Tekst);

            }
        }

        społeczeństwo smyczkowy GetMD5Hash (smyczkowy originalString)
        {
            bajt [] textBytes = System.Text.Encoding.Default.GetBytes (originalString);
            próba
            {
                System.Security.Cryptography.MD5CryptoServiceProvider cryptHandler;
                cryptHandler = nowy System.Security.Cryptography.MD5CryptoServiceProvider ();
                bajt [] hash = cryptHandler.ComputeHash (textBytes);
                sznurek zmiękczać = "";
                foreach (bajt a w hash)
                {
                    jeżeli (a < 16)
                        zmiękczać += "(0)" + a.ToString ("x");
                    inny
                        zmiękczać += a.ToString ("x");
                }
                powrót zmiękczać;
            }
            chwyt
            {
                rzut;
            }

        }

        ochraniać kawitacyjny Submit_Click (przedmiot nadawca, EventArgs e)
        {
            HttpPostedFile file1 = image1Data.PostedFile;
            HttpPostedFile file2 = image2Data.PostedFile;

            jeżeli (file1.FileName! =string. Pusty)
            {
                NameValueCollection nvc = nowy NameValueCollection ();
                nvc. Dodawać ("image1DataID", image1DataID.Text);
                nvc. Dodawać ("image2DataID", image2DataID.Text);
                nvc. Dodawać ("transaction_id", transaction_id. Tekst);
                nvc. Dodawać ("ochrona", ochrona. Tekst);
                nvc. Dodawać ("misc1", misc1.Text);
                nvc. Dodawać ("misc2", misc2.Text);
                nvc. Dodawać ("misc3", misc3.Text);
                nvc. Dodawać ("misc4", misc4.Text);
                     
                //HttpUploadFile (" http://www.babypredictor.com.au/gateway/api.php", imagefile1FullPathName.Value, imagefile2FullPathName.Value, "kartoteka", "wizerunek/jpeg", nvc);
                HttpUploadFile ("http://www.babypredictor.com.au/gateway/api.php", file1, file2, "kartoteka", "wizerunek/jpeg", nvc);

            }

        }
        jawny kawitacyjny HttpUploadFile (smyczkowy url, HttpPostedFile file1, HttpPostedFile file2, smyczkowy paramName, smyczkowy contentType, NameValueCollection nvc)     
        //public kawitacyjny HttpUploadFile (smyczkowy url, smyczkowy file1, smyczkowy file2, smyczkowy paramName, smyczkowy contentType, NameValueCollection nvc)
        {         
            //log.Debug (sznurek. Format ("Kartoteka {(0)} {(1)}", kartoteka, url));
            smyczkowy granica = "---------------------------" + DateTime.Now.Ticks.ToString ("x");
            bajt [] boundarybytes = System.Text.Encoding.ASCII.GetBytes ("\ r \ n--" + granica + "\ r \ n");

            HttpWebRequest wr = (HttpWebRequest) WebRequest.Create (url);
            wr.ContentType = "dane/tworzyć-dane; boundary=" + granica;
            wr. Metoda = "POCZTA";
            wr.KeepAlive = true;
            wr. Referencje = System.Net.CredentialCache.DefaultCredentials;            
            wr. Referer = url;

            wr. Akceptować = "tekst/xml, zastosowanie/xml, zastosowanie/xhtml+xml, tekst/html; q=0.9, tekst/równina; q=0.8, wizerunek/png, */*; q=0.5";
            wr.UserAgent = "Mozilla/4.0 (zgodny; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705)";
            //wr.Accept = "wizerunek/gif, image/x-xbitmap, wizerunek/jpeg, wizerunek/pjpeg, zastosowanie/vnd.ms-excel, zastosowanie/msword, application/x-shockwave-flash, */*";

            Strumień rs = wr.GetRequestStream ();

            smyczkowy formitem, chodnikowiec;

            smyczkowy formdataTemplate = "Zadawalać-Usposobienie: tworzyć-dane; name= \" {(0)} \ "\ r \ n \ r \ n {(1)}";
            foreach (smyczkowy klucz w nvc. Klucz)
            {
                rs. Pisać (boundarybytes, (0), boundarybytes. Długość);
                formitem = sznurek. Format (formdataTemplate, klucz, nvc [klucz]);
                bajt [] formitembytes = System.Text.Encoding.ASCII.GetBytes (formitem);
                rs. Pisać (formitembytes, (0), formitembytes. Długość);
            }

            rs. Pisać (boundarybytes, (0), boundarybytes. Długość);
          
            smyczkowy headerTemplate = "Zadawalać-Usposobienie: tworzyć-dane; name= \" {(0)} \ "; filename= \" {(1)} \ "\ r \ nContent-Typ: {2} \ r \ n \ r \ n";
            chodnikowiec = sznurek. Format (headerTemplate, paramName, file1, contentType);
            bajt [] headerbytes = System.Text.Encoding.ASCII.GetBytes (chodnikowiec);
            rs. Pisać (headerbytes, (0), headerbytes. Długość);

            Strumień file1Stream = file1.InputStream;
            //FileStream fileStream = nowy FileStream (file1.FileName, FileMode.Open, FileAccess.Read);
            bajt [] odbojnica = nowy bajt [4096];
            int bytesRead = (0);
            podczas gdy ((bytesRead = file1Stream.Read (odbojnica, (0), buforować. Długość)) ! = (0))
            {
                bajt [] encodedbuffer = System.Text.Encoding.ASCII.GetBytes (System.Text.ASCIIEncoding.ASCII.GetString (odbojnica));
                rs. Pisać (encodedbuffer, (0), bytesRead);
            }
            
            //fileStream.Close ();

            jeżeli (file2.FileName! =string. Pusty)
            {
                chodnikowiec = sznurek. Format (headerTemplate, paramName, file2, contentType);
                headerbytes = System.Text.Encoding.ASCII.GetBytes (chodnikowiec);
                rs. Pisać (headerbytes, (0), headerbytes. Długość);

                //fileStream = nowy FileStream (file2.FileName, FileMode.Open, FileAccess.Read);
                Strumień file2Stream = file2.InputStream;
                bytesRead = (0);
                podczas gdy ((bytesRead = file2Stream.Read (odbojnica, (0), buforować. Długość)) ! = (0))
                {
                    bajt [] encodedbuffer = System.Text.Encoding.ASCII.GetBytes (System.Text.ASCIIEncoding.ASCII.GetString (odbojnica));
                    rs. Pisać (odbojnica, (0), bytesRead);
                }
                //fileStream.Close ();
            }

            bajt [] przyczepa = System.Text.Encoding.ASCII.GetBytes ("\ r \ n--" + granica + "--\ r \ n");
            rs. Pisać (przyczepa, (0), przyczepa. Długość);
            rs. Zakończenie ();

            WebResponse wresp = null;
            próba
            {
                wresp = wr.GetResponse ();
                Strumień stream2 = wresp.GetResponseStream ();
                StreamReader reader2 = nowy StreamReader (stream2);
                //log.Debug (sznurek. Format ("Kartoteka być, serwer odpowiedź być: {(0)}", reader2.ReadToEnd ()));

                smyczkowy odpowiedź = reader2.ReadToEnd ();

                jeżeli (response.ToLower (). Zawierać ("sukces"))
                {
                    smyczkowy ResponseURL = odpowiedź. Substring (response.IndexOf ("sukces: ") + "sukces: ". Długość);

                    Result.Text = odpowiedź + "


" + ""; } inny Result.Text = odpowiedź + "
"; } chwyt (Wyjątek wyjątek) { //log.Error ("Błąd uploading kartoteka", kartoteka); } w końcu { jeżeli (wresp! = null) { wresp. Zakończenie (); wresp = null; } wr = null; } } } }

Odpowiedź : Poczta wizerunek kartoteka [Binarny Dane] using HttpWebRequest nie udać się.

Ono brać niektóre czas twój kod, więc w the meantime I wolny czas twój kod ty, dlaczego nie próba dlaczego out--boksować che móc twój nagła potrzeba. Zadawalać mieć spojrzenie przy the następujący URL i ściągać the atta

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

i ściągać the kod wspominać w the artykuł od tutaj: http://aspnetupload.com/Download-Source.aspx

Inne rozwiązania  
 
programming4us programming4us