Требуется Upload файл на веб-сервер - C#

Узнай цену своей работы

Формулировка задачи:

Я работаю с Memsource cloud API. http://wiki.memsource.com/wiki/Memsource_API Мне требуется выгрузить файл на веб-сервер. Примеры допустимых форматов файла: .txt, .doc, .xls. Для Upload предназначен Url (более подробно см. Method.png): http://cloud1.memsource.com/web/api/v7/job/uploadBilingualFile , который принимает два обязательных параметра: token (тип string) и bilingualFile (бинарное представление файла, который нужно выгрузить). Серфинг по интернету привел меня к попытке использовать HttpWebRequest. ContentType устанавливаю как multipart/form-data, а Method как POST. Выдается ошибка "400. Bad request". Подскажите, пожалуйста, что я делаю не так?
var uri = "http://cloud1.memsource.com/web/api/v7/job/uploadBilingualFile";
_request = (HttpWebRequest)WebRequest.Create(uri);
 
var boundary = "B0unD-Ary";
_request.ContentType = "multipart/form-data; boundary=" + boundary;
_request.Method = "POST";
_request.UserAgent = "UploadTester v0.1";
 
var postData = "--" + boundary + "\r\nContent-Disposition: form-data\r\n\r\n";
postData += string.Format("token={0}\r\n", _token);
postData += "--" + boundary + "\r\nContent-Disposition: form-data; name="bilingualFile"; filename="1.xls"\r\nContent-Type: application/octet-stream\r\nContent-Transfer-Encoding: binary\r\n\r\n";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
 
byte[] filedata = null;
using (var reader = new BinaryReader(File.OpenRead(@"D:\1.xls")))
filedata = reader.ReadBytes((int)reader.BaseStream.Length);
 
_request.ContentLength = byteArray.Length + filedata.Length;
_request.GetRequestStream().Write(byteArray, 0, byteArray.Length);
_request.GetRequestStream().Write(filedata, 0, filedata.Length);
 
WebResponse response = _request.GetResponse();
Stream data = response.GetResponseStream();
StreamReader sReader = new StreamReader(data);
String sResponse = sReader.ReadToEnd();
response.Close();

Решение задачи: «Требуется Upload файл на веб-сервер»

textual
Листинг программы
public static bool Authentification(string userName, string password)
        {
            using (var client = new WebClient())
            {
                var address = string.Format("http://cloud1.memsource.com/web/api/v3/auth/login?userName={0}&password={1}", userName, password);
                var content = client.DownloadString(address);
                var js = new JavaScriptSerializer();
                var authResponse = (AuthResponse)js.Deserialize(content, typeof(AuthResponse));
                _token = authResponse.Token;
                return !string.IsNullOrWhiteSpace(_token);
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.375 из 5
Похожие ответы