Требуется 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); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д