首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用REST API和C#上传图片

如何使用REST API和C#上传图片
EN

Stack Overflow用户
提问于 2015-10-03 21:55:47
回答 1查看 3K关注 0票数 1

我正在使用php REST API和C#通过使用RestSharp发布带有访问令牌的图像,发送图像文件和访问令牌作为参数,但我无法使用下面的示例程序实现

代码语言:javascript
运行
复制
 private static void postPrescription(string ext, string mime, string token)
    {
        var restClient = new RestClient("http://api.xxy.in/v1/docsupload");
        restClient.AddHandler("application/octet-stream", new RestSharp.Deserializers.JsonDeserializer());
        var request = new RestRequest(Method.POST);
        request.AddHeader("Content-Type", "application/json");
        request.AddHeader("client-Identifier", "192.168.1.24");
        request.AddHeader("client-Platform", "kiosk");
        request.AddHeader("client-Version", "2.00");
        request.AddHeader("client-Type", "kiosk");
        request.AddHeader("Accept", "application/json");

        Dictionary<string, object> dict = new Dictionary<string, object>();
        dict.Add("FILE_EXT", ext);
        dict.Add("FILE_MIME_TYPE", mime);
        byte[] imageBytes;
        using (FileStream fs = File.Open(@"C:\Prescriptions\Presc_1_10_2015_17_19_17.jpeg", FileMode.Open))
        {
            imageBytes = new BinaryReader(fs).ReadBytes((int)fs.Length);
        }
        string image = Convert.ToBase64String(imageBytes);
        dict.Add("IMAGE_DATA", image);
        byte[] data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(dict));
        request.AddParameter("access_token", token);
        request.AddParameter("userfile", data);
        var response = restClient.Execute(request);
        JavaScriptSerializer json = new JavaScriptSerializer();
        Dictionary<string, object> dict1 = json.Deserialize<Dictionary<string, object>>(response.Content);

    }  

尝试使用上面的代码段时,我收到的响应为:"{\" response \":400,\“message\”:\“不支持的文件\”}“

在此之后,我尝试使用HTTP POST方法,但没有成功,我得到的http响应为"{\" response \":401,\“message\”:\“您已注销以保护您的隐私。请重新登录。\“}”

这是我的第二个片段,

代码语言:javascript
运行
复制
  public static void prescriptionPost(string token)
    {
        var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://api.xxy.in/v1/docsupload");
        httpWebRequest.ContentType = "text/json";
        httpWebRequest.Method = "POST";
        httpWebRequestHeaders(httpWebRequest);
        httpWebRequest.ContentType = "application/octet-stream";
        byte[] imageBytes;
        using (FileStream fs = File.Open(@"C:\Prescriptions\Presc_1_10_2015_17_19_17.jpeg", FileMode.Open))
        {
            imageBytes = new BinaryReader(fs).ReadBytes((int)fs.Length);
        }
        string image = Convert.ToBase64String(imageBytes);
        byte[] data = Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(image));
        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            pres ps = new pres
            {
                access_token = token,
                userfile = image
            };
            string json = Newtonsoft.Json.JsonConvert.SerializeObject(ps, Newtonsoft.Json.Formatting.Indented);
            streamWriter.Write(json);
        }


        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            StringBuilder output = new StringBuilder();
            var result = streamReader.ReadToEnd();
            var serializer = new JavaScriptSerializer();
            var myobj = serializer.Deserialize<ObtainToken>(result);
        }

       // example deserializedProduct = Newtonsoft.Json.JsonConvert.DeserializeObject<example>(json);
    }

 internal class pres
{
    public string access_token { get; set; }
    public string userfile { get; set; }
}

我不知道我的代码片段是否正确,或者RestApi中是否存在问题。有人能建议我如何实现这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2018-06-01 18:25:24

代码语言:javascript
运行
复制
using RestSharp;

byte[] imgdata = ImageFileToByteArray(@"D:\SampleIMG.jpg");
RestRequest request = new RestRequest("URL", Method.POST);

request.AddParameter("secret_key", "secret_key_data");
request.AddParameter("Name_Key","Mahesh");
request.AddFile("imageKey", imgdata, "SampleIMG.jpg", "image/jpeg");
RestClient restClient = new RestClient();
IRestResponse response = restClient.Execute(request);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32923409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档