谁知道怎么把BASE64转换成HttpPostedFile啊。。。。求救了

时间:2022-02-20 11:20:54
客户端要传一个BASE64的图片到服务器的WEBAPI,服务器里面因为很多原因,里面需要把BASE64换成HttpPostedFile,
谁能给段代码啊

6 个解决方案

#1


Convert.FromBase64String(base64编码的内容)
然后将字节写到文件中去

#2


百度GOOGLE几个小时了无果,自己顶一下

#3


没空写代码,不过提供基本思路

Base64 str---> byte[]-->stream

然后new 一个HttpPostedFile
把上面的sream 写入HttpPostedFile的InputStream属性(注意,请直接对InputStream流操作,别赋值,他是只读滴,你可以操作不可以赋值)

上面的每一步你都能百度到 “C# base64 to byte[]”  ,"C# byte[] to stream" ,"c# 一个stream 写到另一个stream",所以我就不详细写了

#4


ps:我不知道你要使用什么东西,所以Base64 str---> byte[]-->stream 这一步基本就是必须的
如果你是C# winform 客户端,同时如果你使用webclient 完成post, 那就百度“C# webclient post file”(把其中读本地文件入stream改写成你自己的base64 to stream就可以了)

#5


实际上,我现在个人更喜欢用httpclient类而不是webclient
using (var client = new HttpClient())
{
    using (var content = new MultipartFormDataContent())
    {
        var values = new[]
        {
//表单值部分
            new KeyValuePair<string, string>("Foo", "Bar"),
            new KeyValuePair<string, string>("More", "Less"),
        };

        foreach (var keyValuePair in values)
        {
            content.Add(new StringContent(keyValuePair.Value), keyValuePair.Key);
        }

//文件域部分
        var fileContent = new ByteArrayContent(System.IO.File.ReadAllBytes(fileName));
        fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = "Foo.txt"
        };
        content.Add(fileContent);

        var requestUri = "/api/action";
        var result = client.PostAsync(requestUri, content).Result;
    }
}

#6


引用 5 楼 wanghui0380 的回复:
实际上,我现在个人更喜欢用httpclient类而不是webclient
using (var client = new HttpClient())
{
    using (var content = new MultipartFormDataContent())
    {
        var values = new[]
        {
//表单值部分
            new KeyValuePair<string, string>("Foo", "Bar"),
            new KeyValuePair<string, string>("More", "Less"),
        };

        foreach (var keyValuePair in values)
        {
            content.Add(new StringContent(keyValuePair.Value), keyValuePair.Key);
        }

//文件域部分
        var fileContent = new ByteArrayContent(System.IO.File.ReadAllBytes(fileName));
        fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = "Foo.txt"
        };
        content.Add(fileContent);

        var requestUri = "/api/action";
        var result = client.PostAsync(requestUri, content).Result;
    }
}


这个在webapi里 怎么接收? 谢谢

#1


Convert.FromBase64String(base64编码的内容)
然后将字节写到文件中去

#2


百度GOOGLE几个小时了无果,自己顶一下

#3


没空写代码,不过提供基本思路

Base64 str---> byte[]-->stream

然后new 一个HttpPostedFile
把上面的sream 写入HttpPostedFile的InputStream属性(注意,请直接对InputStream流操作,别赋值,他是只读滴,你可以操作不可以赋值)

上面的每一步你都能百度到 “C# base64 to byte[]”  ,"C# byte[] to stream" ,"c# 一个stream 写到另一个stream",所以我就不详细写了

#4


ps:我不知道你要使用什么东西,所以Base64 str---> byte[]-->stream 这一步基本就是必须的
如果你是C# winform 客户端,同时如果你使用webclient 完成post, 那就百度“C# webclient post file”(把其中读本地文件入stream改写成你自己的base64 to stream就可以了)

#5


实际上,我现在个人更喜欢用httpclient类而不是webclient
using (var client = new HttpClient())
{
    using (var content = new MultipartFormDataContent())
    {
        var values = new[]
        {
//表单值部分
            new KeyValuePair<string, string>("Foo", "Bar"),
            new KeyValuePair<string, string>("More", "Less"),
        };

        foreach (var keyValuePair in values)
        {
            content.Add(new StringContent(keyValuePair.Value), keyValuePair.Key);
        }

//文件域部分
        var fileContent = new ByteArrayContent(System.IO.File.ReadAllBytes(fileName));
        fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = "Foo.txt"
        };
        content.Add(fileContent);

        var requestUri = "/api/action";
        var result = client.PostAsync(requestUri, content).Result;
    }
}

#6


引用 5 楼 wanghui0380 的回复:
实际上,我现在个人更喜欢用httpclient类而不是webclient
using (var client = new HttpClient())
{
    using (var content = new MultipartFormDataContent())
    {
        var values = new[]
        {
//表单值部分
            new KeyValuePair<string, string>("Foo", "Bar"),
            new KeyValuePair<string, string>("More", "Less"),
        };

        foreach (var keyValuePair in values)
        {
            content.Add(new StringContent(keyValuePair.Value), keyValuePair.Key);
        }

//文件域部分
        var fileContent = new ByteArrayContent(System.IO.File.ReadAllBytes(fileName));
        fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = "Foo.txt"
        };
        content.Add(fileContent);

        var requestUri = "/api/action";
        var result = client.PostAsync(requestUri, content).Result;
    }
}


这个在webapi里 怎么接收? 谢谢