如何使用 C# 对接受文件字节数组的 Web 服务执行 httpPost

发布于 2024-11-08 03:07:22 字数 1562 浏览 0 评论 0原文

我正在开发一个 API 类型的项目,

我编写了一个 WebMethod(不完全是。我正在使用 MVC 创建类似 API 的 REST),

public UploadFileImage(string employeeId, byte[] imageBytes, string imageName)
{
    // saves the imagebyte as an image to a folder
}

Web 服务将由 Web 应用程序、Windows 或甚至 iPhone 或类似的便携式设备。我正在使用 Web 应用程序通过简单的 httpPost 测试我的 Web 服务。

string Post(Uri RequestUri, string Data)
    {
        try
        {
            HttpWebRequest request = HttpWebRequest.Create(RequestUri) as HttpWebRequest;

            request.Method = "POST";

            request.ContentType = IsXml.Checked ? "text/xml" : "application/x-www-form-urlencoded";

            byte[] bytes = Encoding.ASCII.GetBytes(Data);
            Stream os = null; // send the Post
            request.ContentLength = bytes.Length;   //Count bytes to send
            os = request.GetRequestStream();
            os.Write(bytes, 0, bytes.Length);

            HttpWebResponse httpWebResponse = (HttpWebResponse)request.GetResponse();
            StreamReader streamReader = new StreamReader(request.GetResponse().GetResponseStream());
            return streamReader.ReadToEnd();

        }
        catch (Exception ex)
        {
            return ex.Message;
        }
    }

这段代码适用于每个方法,如 AddEmployee、DeleteEmployee 等。参数数据的形式为“Id=123&name=abcdefgh&desig=Developer”,

我如何调用任何其他函数是 Post(new Uri("http://localhost/addemployee"),"name=abcd&password=efgh")
其中 post 是我写的函数。

一切都对所有功能都有好处。除了我不知道如何使用上述函数UploadFileImage来上传图像?

谢谢

I am working on an API kind of project,

I have wrote a WebMethod (not exactly. I am using MVC to create REST like API)

public UploadFileImage(string employeeId, byte[] imageBytes, string imageName)
{
    // saves the imagebyte as an image to a folder
}

the web service would be consumed by a web app, or windows or even iphone or such portable stuffs. I am testing my web service using a web app, by simple httpPost.

string Post(Uri RequestUri, string Data)
    {
        try
        {
            HttpWebRequest request = HttpWebRequest.Create(RequestUri) as HttpWebRequest;

            request.Method = "POST";

            request.ContentType = IsXml.Checked ? "text/xml" : "application/x-www-form-urlencoded";

            byte[] bytes = Encoding.ASCII.GetBytes(Data);
            Stream os = null; // send the Post
            request.ContentLength = bytes.Length;   //Count bytes to send
            os = request.GetRequestStream();
            os.Write(bytes, 0, bytes.Length);

            HttpWebResponse httpWebResponse = (HttpWebResponse)request.GetResponse();
            StreamReader streamReader = new StreamReader(request.GetResponse().GetResponseStream());
            return streamReader.ReadToEnd();

        }
        catch (Exception ex)
        {
            return ex.Message;
        }
    }

This code works fine for evey method like, AddEmployee, DeleteEmployee etc. THe parameter Data is of form "Id=123&name=abcdefgh&desig=Developer",

How I call any other function is
Post(new Uri("http://localhost/addemployee"),"name=abcd&password=efgh")
where post is the function i wrote.

All good for all functions. Except that I dont know how to consume the above mentioned function UploadFileImage to upload an image?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

弥枳 2024-11-15 03:07:24

尝试将 imageBytes 编码为 Base64。

Try encoding the imageBytes as Base64.

辞慾 2024-11-15 03:07:24

从您的代码片段来看,您不太清楚如何调用UploadFileImage,即如何将其参数三元组转换为Data

这就是为什么我的答案非常笼统:

一般来说,您最好通过以下方式传输图像文件

request.ContentType = "multipart/form-data; boundary=----------------------------" + DateTime.Now.Ticks.ToString("x");

请允许我向您推荐 StackOverflow 上有关如何格式化多部分请求的示例。我相信如果你用谷歌搜索,你也会找到很多详细的例子和解释。

我希望这有帮助:-)

From your code snippet is not too clear how you call UploadFileImage, that is how you convert its parameters tripplet into Data.

That is why my answer is quite generic:

In general, you'd better transfer your image file by

request.ContentType = "multipart/form-data; boundary=----------------------------" + DateTime.Now.Ticks.ToString("x");

Please allow me to refer you to a sample at StackOverflow on how to format a multipart request. I am sure that if you google, you shall find a lots of detailed examples and explanations as well.

I hope this helps :-)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文