Bonjour à tous,
Je recherche le moyen de transférer une image ( enfin le flux d'une image, en byte[] ) vers une page web, via HTTP
Mon code actuel C# ressemble grossièrement au suivant :
Le PHP de la page de réception ressemble à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public string UploadPicture(string url, byte[] content) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.ContentType = "application/octet-stream"; request.Method = "POST"; byte[] param = Encoding.GetEncoding(shopEncoding).GetBytes("source-byte="); byte[] endOfString = Encoding.GetEncoding(shopEncoding).GetBytes("\n"); List<byte> allBytes = new List<byte>(); for (int i = 0; i < param.Length; i++) allBytes.Add(param[i]); for (int i = 0; i < content.Length; i++) allBytes.Add(content[i]); for (int i = 0; i < endOfString.Length; i++) allBytes.Add(endOfString[i]); request.ContentLength = allBytes.Count; using (Stream newStream = request.GetRequestStream()) { newStream.Write(allBytes.ToArray(), 0, allBytes.Count); } string result = string.Empty; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (Stream mystream = response.GetResponseStream()) { using (StreamReader mystreamreader = new StreamReader(mystream, Encoding.GetEncoding(_websiteEncoding))) { result = mystreamreader.ReadToEnd().Replace("\r\n", "\n").Replace("\n", "\r\n"); } } return result; }
L'image "test.jpg" obtenu est cependant illisible...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $file_name = dirname(__FILE__).'/images-temp/test.jpg'; $file = fopen( $file_name,'x+' ); if( !fwrite( $file,$GLOBALS['HTTP_RAW_POST_DATA']) ) return ; fclose( $file ); print 'succès';
Quelqu'un pourrait-il m'aiguiller ? (ou m'avertir si ce que je souhaite faire n'est pas possible !)
Merci.
Partager