c# curl文件上傳怎么實(shí)現(xiàn)

c#
小樊
118
2024-07-10 01:00:29
欄目: 編程語言

在C#中實(shí)現(xiàn)文件上傳可以通過使用HttpWebRequest類來發(fā)送HTTP POST請(qǐng)求,并在請(qǐng)求中包含要上傳的文件。以下是一個(gè)示例代碼,演示如何使用C#實(shí)現(xiàn)文件上傳:

using System;
using System.IO;
using System.Net;

class Program
{
    static void Main(string[] args)
    {
        string url = "http://example.com/upload";
        string filePath = "path/to/file.txt";

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.Method = "POST";

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

        using (Stream requestStream = request.GetRequestStream())
        {
            using (StreamWriter writer = new StreamWriter(requestStream))
            {
                writer.WriteLine("--" + boundary);
                writer.WriteLine("Content-Disposition: form-data; name=\"file\"; filename=\"" + Path.GetFileName(filePath) + "\"");
                writer.WriteLine("Content-Type: application/octet-stream");
                writer.WriteLine();

                using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
                {
                    byte[] buffer = new byte[4096];
                    int bytesRead;
                    while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
                    {
                        requestStream.Write(buffer, 0, bytesRead);
                    }
                }

                writer.WriteLine();
                writer.WriteLine("--" + boundary + "--");
            }
        }

        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        {
            using (Stream responseStream = response.GetResponseStream())
            {
                using (StreamReader reader = new StreamReader(responseStream))
                {
                    string responseText = reader.ReadToEnd();
                    Console.WriteLine(responseText);
                }
            }
        }
    }
}

在上述代碼中,首先創(chuàng)建一個(gè)HttpWebRequest對(duì)象,并設(shè)置請(qǐng)求的方法為POST。然后設(shè)置請(qǐng)求的Content-Type為multipart/form-data,并定義一個(gè)boundary用于分隔請(qǐng)求的不同部分。接著將文件內(nèi)容寫入請(qǐng)求的流中,并在結(jié)束時(shí)添加boundary標(biāo)記。最后發(fā)送請(qǐng)求并讀取響應(yīng)內(nèi)容。

請(qǐng)注意,以上示例中使用了HttpWebRequest類來實(shí)現(xiàn)文件上傳,也可以考慮使用更方便的第三方庫,如HttpClient來實(shí)現(xiàn)文件上傳。

0