这是我的json:
byte[] attachmentBytes = ZipToBase64();
string json = "{ \"method\": \"Bug.add_attachment\", " +
" \"params\": [ {" +
" \"ids\": " + " \"" + "25" +"\", " +
" \"data\": " + " \"" + attachmentBytes + "\", " +
" \"file_name\": " + " \"BugReport.zip\", " +
" \"Bugzilla_login\": " + " \"mymail@hotmail.com\", " +
" \"Bugzilla_password\": " + " \"mypassword\", " +
" \"summary\": " + " \"blah blah\", " +
" \"content_type\": " + " \"application/octet-stream\" " +
" } ], " +
"\"id\": 1"
+ "}";
public static byte[] ZipToBase64()
{
string filePath = @"C:\Users\John\Desktop\SomeArchive.zip";
if (!string.IsNullOrEmpty(filePath))
{
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
byte[] filebytes = new byte[fs.Length];
fs.Read(filebytes, 0, Convert.ToInt32(fs.Length));
string encodedData = Convert.ToBase64String(filebytes, Base64FormattingOptions.InsertLineBreaks);
string encoded = encodedData;
return filebytes;
}
return null;
}
我认为问题出在attachmentBytes部分,因为它是一个byte []。如何在json中传递byte []?
代码在C#中。
答案 0 :(得分:4)
您似乎正在尝试将byte []连接到字符串。那不行。我猜你得到的错误是关于这个连接的编译错误,对吧?
不返回byte [],而是返回Convert.ToBase64String
返回的base64字符串。您可以在JSON中嵌入该字符串。
当我们讨论这个主题时,你可以通过简单地调用File.ReadAllBytes(filePath)
来大幅缩短你的文件阅读量,{{1}}封装了所有的文件流业务,所以你不必这样做。
答案 1 :(得分:0)
更改ZipToBase64
,以便它返回String
而不是byte array
。
public static string ZipToBase64()
{
string filePath = @"C:\Users\John\Desktop\SomeArchive.zip";
if (!string.IsNullOrEmpty(filePath))
{
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
byte[] filebytes = new byte[fs.Length];
fs.Read(filebytes, 0, Convert.ToInt32(fs.Length));
return Convert.ToBase64String(filebytes,
Base64FormattingOptions.InsertLineBreaks);
}
return null;
}