如何使用C#将文件通过ASP.net应用程序附加到FogBugz

时间:2013-03-18 10:29:17

标签: fogbugz fogbugz-api

我有一个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);
    }

我已经尝试了“Editing Cases”下的所有说明,但它没有帮助。事实上,我不知道文件1,文件2是什么以及如何将它们发送到FogBugz。

任何人都可以帮我吗? 非常感谢!

1 个答案:

答案 0 :(得分:0)

应在multipart / form-data帖子的正文中指定File1(而不是查询字符串参数)。

您实际上必须指定文件中的所有字节。

fogbugz.stackexchange.com以及C# FogBugz API wrapper都有答案可以为您处理所有部分。

帖子正文中的表单部分看起来像

--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

或者您可以通过示例查看this question which points to an RFC