如何在c#中将文件上传到REST

本文关键字:REST 文件 | 更新日期: 2023-09-27 18:24:33

我正在尝试调用一个RESTapi来上传文件作为参数。我可以使用以下代码访问其余服务。但我无法传递文件对象。我能够使用代码将字符串传递给api。

此代码正在访问服务器。c#代码如下。

using (var client = new WebClient())
            {
                var collection = new NameValueCollection();
                collection["para1"] = "C:''abc.txt"; 
                collection["para2"] = "C:''file2.doc";
                collection["para3"] = "C:''ab.jpg";
                collection["details"] = "C:''det.txt";
                var response = client.UploadValues("http://192.168.1.23:8555/upload", collection);
                var responseString = Encoding.Default.GetString(response);
            }

这里怎么了?

我也能在邮递员休息客户做同样的事情。如果我这样做是为了将para1的值作为一个文件对象,它会给出错误,因为名称和值都应该是字符串。如何使用文件对象作为参数来调用REST。

collection["para1"] = File.read("C:''abc.txt");

如何在c#中将文件上传到REST

参考Webclient.UploadValues的MSDN文档,这是一种用于将指定的名称/值集合上载到由指定URI标识的资源的方法。在你的情况下,你需要上传文件的集合,为此你必须使用web客户端的UploadFile方法,同时迭代你的NamedValueCollection来上传你的文件,这意味着这样的事情:

foreach (var item in collection )
    var response = client.UploadFile("http://192.168.1.23:8555/upload", item.value);