栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

WebClient上传带有POST值的UploadFile

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

WebClient上传带有POST值的UploadFile

没有内置功能可让您执行此操作。我已经在博客中发布了可以使用的扩展程序。以下是相关的类:

public class UploadFile{    public UploadFile()    {        ContentType = "application/octet-stream";    }    public string Name { get; set; }    public string Filename { get; set; }    public string ContentType { get; set; }    public Stream Stream { get; set; }}public byte[] UploadFiles(string address, IEnumerable<UploadFile> files, NamevalueCollection values){    var request = WebRequest.Create(address);    request.Method = "POST";    var boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x", NumberFormatInfo.InvariantInfo);    request.ContentType = "multipart/form-data; boundary=" + boundary;    boundary = "--" + boundary;    using (var requestStream = request.GetRequestStream())    {        // Write the values        foreach (string name in values.Keys)        { var buffer = Encoding.ASCII.GetBytes(boundary + Environment.newline); requestStream.Write(buffer, 0, buffer.Length); buffer = Encoding.ASCII.GetBytes(string.Format("Content-Disposition: form-data; name="{0}"{1}{1}", name, Environment.newline)); requestStream.Write(buffer, 0, buffer.Length); buffer = Encoding.UTF8.GetBytes(values[name] + Environment.newline); requestStream.Write(buffer, 0, buffer.Length);        }        // Write the files        foreach (var file in files)        { var buffer = Encoding.ASCII.GetBytes(boundary + Environment.newline); requestStream.Write(buffer, 0, buffer.Length); buffer = Encoding.UTF8.GetBytes(string.Format("Content-Disposition: form-data; name="{0}"; filename="{1}"{2}", file.Name, file.Filename, Environment.newline)); requestStream.Write(buffer, 0, buffer.Length); buffer = Encoding.ASCII.GetBytes(string.Format("Content-Type: {0}{1}{1}", file.ContentType, Environment.newline)); requestStream.Write(buffer, 0, buffer.Length); file.Stream.CopyTo(requestStream); buffer = Encoding.ASCII.GetBytes(Environment.newline); requestStream.Write(buffer, 0, buffer.Length);        }        var boundaryBuffer = Encoding.ASCII.GetBytes(boundary + "--");        requestStream.Write(boundaryBuffer, 0, boundaryBuffer.Length);    }    using (var response = request.GetResponse())    using (var responseStream = response.GetResponseStream())    using (var stream = new MemoryStream())    {        responseStream.CopyTo(stream);        return stream.ToArray();    }}

现在您可以在应用程序中使用它:

using (var stream = File.Open(dumpPath, FileMode.Open)){    var files = new[]     {        new UploadFile        { Name = "file", Filename = Path.GetFileName(dumpPath), ContentType = "text/plain", Stream = stream        }    };    var values = new NamevalueCollection    {        { "client", "VIP" },        { "name", "John Doe" },    };    byte[] result = UploadFiles(address, files, values);}

现在,在你的PHP脚本,你可以使用

$_POST["client"]
$_POST["name"]
$_FILES["file"]



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/568670.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号