C# http post上傳文件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Threading;

namespace HttpUploadTest
{
    class Program
    {
        //static string m_address = "http://localhost:50000";
        static string m_address = "http://210.73.221.45:50000";
        static void FileUpload(object m_fileNamePath)
        {
            DateTime start = DateTime.Now;
          
              // 要上傳的文件 
            FileStream oFileStream = new FileStream(m_fileNamePath.ToString(), FileMode.Open, FileAccess.Read);
            BinaryReader oBinaryReader = new BinaryReader(oFileStream);

            // 根據uri建立HttpWebRequest對象 
            HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(new Uri(m_address));
            httpReq.Method = "POST";

            //對發送的數據不使用緩存 
            httpReq.AllowWriteStreamBuffering = false;

            //設置得到響應的超時時間(半小時) 
            httpReq.Timeout = 300000;
           //httpReq.Timeout = 5000;
           // httpReq.ReadWriteTimeout = 150000;
            httpReq.KeepAlive = true;
            httpReq.ProtocolVersion = HttpVersion.Version11;

            httpReq.ContentType = "application/pdf";
            long filelength = oFileStream.Length;
            httpReq.SendChunked = true;
            //在將 AllowWriteStreamBuffering 設置爲 false 的狀況下執行寫操做時,必須將 ContentLength 設置爲非負數,或者將 SendChunked 設置爲 true。
        
            //每次上傳4k 
            int bufferLength = 4*1024;
            byte[] buffer = new byte[bufferLength];

            //已上傳的字節數 
            long offset = 0;

            //開始上傳時間 
            DateTime startTime = DateTime.Now;
            int size = oBinaryReader.Read(buffer, 0, bufferLength);
            Stream postStream = httpReq.GetRequestStream();

            while (size > 0)
            {
                postStream.Write(buffer, 0, size);
                offset += size;
                size = oBinaryReader.Read(buffer, 0, bufferLength);
                //Console.Write(".");
            }
            //Console.WriteLine(".");
            postStream.Flush();
            postStream.Close();

            //獲取服務器端的響應 
            WebResponse webRespon = httpReq.GetResponse();
            Stream s = webRespon.GetResponseStream();
            StreamReader sr = new StreamReader(s);
            DateTime end = DateTime.Now;
            TimeSpan ts = end - start;
            //讀取服務器端返回的消息 
            String sReturnString = sr.ReadLine();
            Console.WriteLine("retcode="+sReturnString+" 花費時間="+ts.TotalSeconds.ToString());
            s.Close();
            sr.Close();
        }

        static void Main(string[] args)
        {
            string filePath = "D:\\test";
            string[] ary = Directory.GetFiles(filePath);
            for (int i = 0; i < (int)ary.Count(); i++)
            {
                Thread oneProcess = new Thread(new ParameterizedThreadStart(FileUpload));
                oneProcess.Priority = ThreadPriority.AboveNormal;
                oneProcess.Start(ary[i]);
                oneProcess.IsBackground = false;
            }
        }
    }
}
相關文章
相關標籤/搜索