2013-03-24 5 views
0

Я работаю над проектом, который требует использования команд curl для загрузки файла на определенный сайт. Я хочу, чтобы это было реализовано с помощью C#. От взгляда на подобные вопросы на SO я не нашел ничего, что, кажется, работает для меня, если я не сделаю это неправильно.Использование WebRequest вместо команды curl

Это локон команда, которую я успешно использовать с Cygwin:

curl -i -u user:password -F '[email protected]\Users\User\Desktop\test.jpg' -F 'json={"content": {"type": "text/html", "text": "<body><p>look at me, look at me</p></body>"}, "type": "document", "subject": "Document with Attachment"};type=application/json' http://someurl 

Прямо сейчас я пытаюсь сделать эту работу с WebRequest, как я читал, что это возможно и на других должностях. Это то, что у меня есть до сих пор.

WebRequest request = WebRequest.Create("http://someurl"); 
      request.PreAuthenticate = true; 
      request.ContentType = "application/json"; 
      request.Method = "POST"; 
      string authInfo = Convert.ToBase64String(Encoding.UTF8.GetBytes("user:password")); 
      request.Headers["Authorization"] = "Basic " + authInfo; 

      //what do I set my buffer to? 

      Stream reqstr = request.GetRequestStream(); 
      reqstr.Write(buffer, 0, buffer.Length); 
      reqstr.Close(); 

      WebResponse response = request.GetResponse(); 

Что я устанавливаю для своего буфера здесь, чтобы написать команду curl, которая, в свою очередь, должна отправить файл test.jpg? Кроме того, я пробовал использовать libcurl без успеха. Любые указатели в правильном направлении приветствуются!

+0

Вы должны написать содержание типа многочастных/form-данных (параметр -F завитка посыла 2 поля, в формате JSON и файл). Вот пример: http://stackoverflow.com/a/3890955/209727 –

+0

дамп все, что auth stuff. request.Credentials = новый NetworkCredential (пользователь, пароль); –

ответ

0

Вы можете сначала указать описание документа POST json, а затем содержимое файла PUT со вторым запросом, или загрузить оба с одним POST, используя multipart/form-data.

Это сообщение имеет большой пример того, как сделать это: How do I add/create/insert files to Google Drive through the API?