最近我发现了这个名为Directus的惊人的cms,你可以在那里用web请求和Json管理你的数据库和表。 一切都很好地创建,更新,阅读...直到我想要使用WebRequest创建(上传)图像。
我基本上将图像读取为Base64,并使用简单的GET请求将数据与Uri中的参数一起写入,与API中描述的完全相同。
无论我尝试使用哪些图像永远不会出现在我的文件中。 我做错了什么或遗忘了什么?
或者我还想从我这里得到别的东西吗?
我的第一次尝试:
public static async void UploadUserImage() {
var uri = "http://IP/Directus/api/1/files?access_token=SecretApiKey";
var data = GetImageData();
var finalUri = $"{uri}&data={data}";
using (var client = new HttpClient()) {
var responseString = await client.GetStringAsync(finalUri);
Console.Write(responseString);
}
}
我和Json的第二次尝试:
public static async void UploadUserImage() {
var uri = "http://IP/Directus/api/1/files?access_token=SecretApiKey";
var data = GetImageData();
var finalUri = $"{uri}&data={data}";
var postModel = new PictureModel {
data = data,
title = "Test",
name = "test"
};
using (var client = new HttpClient())
{
// Serialize our concrete class into a JSON String
var content = JsonConvert.SerializeObject(postModel);
var contenta = new StringContent(content, Encoding.UTF8, "application/json");
var response = await client.PostAsync(finalUri, contenta);
var result = await response.Content.ReadAsByteArrayAsync();
Console.Write(System.Text.Encoding.UTF8.GetString(result));
}
}
答案 0 :(得分:2)
文档不正确,实际上是POST
请求。 感谢您指出这一点。
要上传新文件,您需要提供三个值:
{
"name": "image.png",
"type": "image/png",
"data": "base64content"
}
数据内容必须采用此格式data:<mime-type>;base64,<data-content>
,因此它看起来像这样:data:image/png;base64,ThisIsABase64Content
我们正在更新文档并删除不必要的data:image/png
。