Как прикрепить файлы через приложение ASP.net к FogBugz с C#
У меня есть приложение ASP.net, которое позволяет пользователям сообщать об ошибках и прикреплять файлы. Ошибка вместе с ее деталями и приложениями должна быть сохранена в FogBugz. Мне удалось создать все, кроме части прикрепления файла.
вот мой код:
private void NewCaseWithFile()
{
string fbUrl = "https://test.fogbugz.com/api.asp";
string fbToken = logInFogBugz();
string param = "";
param += "cmd=new";
param += "&token=" + fbToken;
param += "&sTags=" + "OnlineService,";
param += "&sTitle=" + "Testing";
param += "&sEvent=" + "This case is being created from Visual Studio";
param += "&nFileCount=" + "1";
param += "&File1=" + "Picture.png";
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(fbUrl + "?" + param);
httpWebRequest.Method = WebRequestMethods.Http.Post;
httpWebRequest.ContentType = "multipart/form-data";
httpWebRequest.Accept = "application/xml";
httpWebRequest.ContentLength = 0;
HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse();
StreamReader streamReader = new StreamReader(response.GetResponseStream());
XDocument doc = XDocument.Load(streamReader);
}
Я перепробовал все инструкции в разделе " Редактирование дел", но это не помогло. На самом деле я понятия не имею, что такое Файл 1, Файл 2 и как отправить их в FogBugz.
Кто-нибудь может мне с этим помочь? Большое спасибо!
1 ответ
Файл1 должен быть указан в теле вашего сообщения multipart/form-data (не как параметр строки запроса).
Вы фактически должны указать все байты в файле.
Там есть ответ на fogbugz.stackexchange.com, а также обертка C# FogBugz API, которая будет обрабатывать все части за вас.
Части формы в теле вашего поста будут выглядеть так
--sdfjdsjsdflk SOME BOUNDARY--
Content-Disposition: form-data; name="File1"; filename="foo.jpg"
Content-Transfer-Encoding: base64
Content-Type: image/png
slfkajdflksjflajfdj
sldfjsd;aljfds
these are actual data bytes from the foo.jpg file
slfkjdsfljds
sdflajsdfs
Или вы можете посмотреть на этот вопрос, который указывает на RFC с примером.