C#获取请求Directus

时间:2016-12-21 18:58:09

标签: c# rest httpwebrequest

最近我发现了这个名为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));
            }
        }

1 个答案:

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