C#实现HTTP上传文件的方法

作者:shichen2014 时间:2023-04-28 04:05:30 

本文实例讲述了C#实现HTTP上传文件的方法。分享给大家供大家参考。具体实现方法如下:

发送文件代码如下:


/// <summary>
/// Http上传文件
/// </summary>
public static string HttpUploadFile(string url, string path)
{
    // 设置参数
    HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
    CookieContainer cookieContainer = new CookieContainer();
    request.CookieContainer = cookieContainer;
    request.AllowAutoRedirect = true;
    request.Method = "POST";
    string boundary = DateTime.Now.Ticks.ToString("X"); // 随机分隔线
    request.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary;
    byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n");
    byte[] endBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");

    int pos = path.LastIndexOf("\\");
    string fileName = path.Substring(pos + 1);

    //请求头部信息
    StringBuilder sbHeader = new StringBuilder(string.Format("Content-Disposition:form-data;name=\"file\";filename=\"{0}\"\r\nContent-Type:application/octet-stream\r\n\r\n", fileName));
    byte[] postHeaderBytes = Encoding.UTF8.GetBytes(sbHeader.ToString());

    FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
    byte[] bArr = new byte[fs.Length];
    fs.Read(bArr, 0, bArr.Length);
    fs.Close();

    Stream postStream = request.GetRequestStream();
    postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length);
    postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
    postStream.Write(bArr, 0, bArr.Length);
    postStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length);
    postStream.Close();

    //发送请求并获取相应回应数据
    HttpWebResponse response = request.GetResponse() as HttpWebResponse;
    //直到request.GetResponse()程序才开始向目标网页发送Post请求
    Stream instream = response.GetResponseStream();
    StreamReader sr = new StreamReader(instream, Encoding.UTF8);
    //返回结果网页(html)代码
    string content = sr.ReadToEnd();
    return content;
}

接收文件的代码如下:


using System;
using System.Web;

namespace SWX
{
    public partial class test2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            HttpPostedFile file = Request.Files[0];
            file.SaveAs(MapPath("\\UploadFile\\" + file.FileName));
            Response.Write("Success\r\n");
        }
    }
}

希望本文所述对大家的C#程序设计有所帮助。

标签:C#,HTTP,上传,文件
0
投稿

猜你喜欢

  • SSM框架实现分页和搜索分页的示例代码

    2022-04-13 04:52:49
  • c# RSA非对称加解密及XML&PEM格式互换方案

    2022-07-10 12:19:31
  • C#实现Zip压缩目录中所有文件的方法

    2021-05-29 15:41:47
  • Android如何从实现到封装一个MVP详解

    2023-02-12 10:44:40
  • Java代码注释规范(动力节点整理)

    2022-10-26 21:01:50
  • TOMCAT内存溢出及大小调整的实现方法

    2023-02-24 06:55:33
  • 基于C语言string函数的详解

    2023-06-28 05:33:25
  • JAVA中实现原生的 socket 通信机制原理

    2021-08-08 03:06:01
  • 详解处理Java中的大对象的方法

    2021-08-06 23:06:11
  • Java多线程实现四种方式原理详解

    2022-05-30 02:55:10
  • Android开发中解析xml文件XmlUtils工具类与用法示例

    2023-03-26 01:05:45
  • Java动态线程池插件dynamic-tp集成zookeeper

    2023-11-25 03:41:38
  • Android实现TCP断点上传 后台C#服务接收

    2023-08-25 22:24:00
  • SpringMVC中的Model对象用法说明

    2022-12-15 02:24:34
  • 并行Stream与Spring事务相遇会发生什么?

    2022-08-28 15:40:12
  • Java 动态模拟操作系统进程调度算法

    2023-04-10 15:09:20
  • Spring Security 中如何让上级拥有下级的所有权限(案例分析)

    2022-01-28 16:55:26
  • Java 数组高频考点分析讲解

    2021-09-01 13:14:36
  • Java多线程:生产者与消费者案例

    2021-06-30 05:47:08
  • C#最简单的字符串加密解密方法

    2022-10-30 12:46:36
  • asp之家 软件编程 m.aspxhome.com