I’m trying to upload files to a JIRA issue using C# and HttpWebRequest but getting a 404 error. According to the JIRA REST API docs, I need to send a multipart POST request with the X-Atlassian-Token header set to “nocheck”. Here’s what I have so far:
foreach (JiraFileUpload upload in fileUploads.items)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(
connectionInfo.GetBaseUrl() + "/rest/api/2/issue/" + issueKey + "/attachments"
);
webRequest.Headers.Add("Authorization: Basic " + connectionInfo.GetAuthToken());
webRequest.Method = "POST";
webRequest.ContentType = "multipart/form-data";
webRequest.Headers.Add("X-Atlassian-Token: nocheck file=@" + Path.GetFullPath(@"..\Files\" + upload.name));
webRequest.KeepAlive = true;
webRequest.Proxy = proxySettings;
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
Stream responseStream = webResponse.GetResponseStream();
FileStream fileStream = new FileStream(Path.GetFullPath(@"..\Files\" + upload.name), FileMode.Open);
byte[] buffer = new byte[256];
int bytesRead = fileStream.Read(buffer, 0, buffer.Length);
while (bytesRead > 0)
{
responseStream.Write(buffer, 0, bytesRead);
bytesRead = fileStream.Read(buffer, 0, buffer.Length);
}
fileStream.Close();
responseStream.Close();
webResponse.Close();
}
The API expects multipart/form-data format with the file parameter name being “file”. What am I doing wrong here?