fedragon
|
|
1
|
Вконтакте api - залить фотографии
08.11.2012, 06:39. Показов 1056. Ответов 0
Тут будет много кода, но я реально уже всю голову сломал.
Никак не хотят заливаться фотографии вконтакт.
Вот так это происходит
C# | 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
| try
{
XmlDocument upload_server_xml = Program.API.GetUploadServer(aid, gid);
foreach (XmlNode n2 in upload_server_xml.SelectNodes("/response"))
{
upload_server += String.Format(n2.SelectSingleNode("upload_url").InnerText);
}
}
catch (Exception ex)
{
MessageBox.Show("Error. " + ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
//аплоад сервера получаю, всё нормально пока
string json_answer = uploadphotos(upload_server, txtbox_compphoto.Text);
//функция uploadphosot внизу, содрал её отсюда [url]https://www.cyberforum.ru/csharp-net/thread304372.html[/url]
//в той теме тоже отписался по содранному куску, может проблема в нём? Там md5 я ингорирую в одном
//месте. Но вообще json приходит, его тоже приложу в след. посте
var json_parsed = JsonConvert.DeserializeObject<json_answer>(json_answer);
//нормально парсится и json, все данные доступны по json_parsed.photos_list, json_parsed.hash и так далее
string debugstring = "";
try
{
XmlDocument photos_save = Program.API.PhotosSave(aid, json_parsed.server, json_parsed.photos_list, json_parsed.hash, gid, caption.Text);
}
catch (Exception ex)
{
MessageBox.Show("Error. " + ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
} |
|
Добавлено через 6 минут
C# | 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
| private string uploadphotos(string upload_url, string pathtofile)
{
byte[] pic = File.ReadAllBytes(pathtofile);
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(upload_url);
Stream _stream;
string _boundary = String.Format("--{0}", ());
string _templateFile = "--{0}\r\nContent-Disposition: form-data; name=\"{1}\"; filename=\"{2}\"\r\nContent-Type: {3}\r\n\r\n";
string _templateEnd = "--{0}--\r\n\r\n";
Request.Method = "POST";
Request.ContentType = String.Format("multipart/form-data; boundary={0}", _boundary);
_stream = Request.GetRequestStream();
string FilePath = pathtofile;
string FileType = "application/octet-stream";
string Name = "file1";
byte[] contentFile = Encoding.UTF8.GetBytes(String.Format(_templateFile, _boundary, Name, FilePath, FileType));
_stream.Write(contentFile, 0, contentFile.Length);
_stream.Write(pic, 0, pic.Length);
byte[] _lineFeed = Encoding.UTF8.GetBytes("\r\n");
_stream.Write(_lineFeed, 0, _lineFeed.Length);
byte[] contentEnd = Encoding.UTF8.GetBytes(String.Format(_templateEnd, _boundary));
_stream.Write(contentEnd, 0, contentEnd.Length);
HttpWebResponse webResponse = (HttpWebResponse)Request.GetResponse();
StreamReader read = new StreamReader(webResponse.GetResponseStream());
return read.ReadToEnd();
} |
|
функция uploadphotos
|