1. 程式人生 > >Net模擬http表單檔案上傳

Net模擬http表單檔案上傳

模擬http表單上傳,要特別注意其格式:如回車換行,差一個都可能得不到正確的響應,還有請求的Content-Length一定計算對

        /// <summary>

        /// 模擬form表單上傳

        /// </summary>

        /// <param name="url">路徑</param>

        /// <param name="buffer">資料流</param>

        /// <param name="fileName">檔名稱</param>

        /// <returns>返回響應資訊</returns>

        private static string UploadFilesToRemoteUrl(string url, byte[] buffer, string fileName)

        {

            string boundary = "----------" + DateTime.Now.Ticks.ToString("x");

            System.Net.ServicePointManager.DefaultConnectionLimit = 50;

            HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(url);

            myReq.Credentials = System.Net.CredentialCache.DefaultCredentials;

            myReq.Timeout = 5 * 60 * 1000;

            myReq.Method = "POST";

            myReq.ContentType = "multipart/form-data; boundary=" + boundary;

            StringBuilder sb = new StringBuilder();

            sb.Append("--" + boundary + "\r\n");

            sb.Append("Content-Disposition: form-data; name=\"fileName \"; filename=\"e:\\" + fileName + "\"");

            sb.Append("\r\n");

            sb.Append("Content-Type: pplication/octet-stream");

            sb.Append("\r\n\r\n");

            string head = sb.ToString();

            byte[] form_data = Encoding.UTF8.GetBytes(head);

            //結尾

            byte[] foot_data = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");

            myReq.ContentLength = buffer.Length + form_data.Length + foot_data.Length;

            myReq.KeepAlive = true;

            myReq.ProtocolVersion = HttpVersion.Version10;

            Stream requestStream = myReq.GetRequestStream();

            requestStream.Write(form_data, 0, form_data.Length);

            requestStream.Write(buffer, 0, buffer.Length);

            requestStream.Write(foot_data, 0, foot_data.Length);

            requestStream.Close();

            using (HttpWebResponse webResponse = (HttpWebResponse)myReq.GetResponse())

            {

                Stream responseStream = webResponse.GetResponseStream();

                StreamReader reader = new StreamReader(responseStream);

                string str = reader.ReadToEnd();

                return str;

            }

        }

相關推薦

Net模擬http檔案

模擬http表單上傳,要特別注意其格式:如回車換行,差一個都可能得不到正確的響應,還有請求的Content-Length一定計算對         /// <summary>         /// 模擬form表單上傳         /// </

Ajax(form檔案、請求頭之contentType、Ajax傳遞json資料)

form表單檔案上傳 上菜 file_put.html <form action="" method="post" enctype="multipart/form-data"> {# 這裡必須要請求頭格式才能把上傳檔案的物件傳過去 enctype="multipart/form-

springmvc中Form檔案使用ajax提交

上傳檔案這塊坑真是不少,耽誤了有幾個小時的時間,現在簡單總結一下; 首先springmvc的核心xml中配置下MultipartResolver: <!-- 配置 MultipartResolver -->     <bean id="multipart

window.showModalDialog()使用與form檔案以及父子頁面

window.showModalDialog()簡介: (1)使用方法:  window.showModalDialog(sURL [, vArguments] [,sFeatures]) (2)引數說明 sURL--必選引數,型別:字串。用來指定對話方塊要顯示的頁面的

mvc 利用form檔案

前端頁面 <form action="/my/reviewdata" method="post" enctype="multipart/form-data"> <input class="imgx" name="img" type="file" multiple="mult

檔案下載ajax方式返回值

頁面引入:jquery-form.js function importSaleOrder(){ var file=$("#file").val(); if(file!=""){

form檔案方法

普通的表單資料 servlet中的程式碼 在上傳檔案時需要在表單屬性中加enctype,改成二進位制的方法上傳資料  此時就不能使用getparameter的方法 可以使用apache的一個上傳檔案的jar @WebServlet("/upload") publi

利用jquery&iframe標籤實現頁面無跳轉的檔案

最近公司專案修改上傳檔案效果,大致效果就是上傳檔案提交時不能進行頁面跳轉,然後最好是沒有提交按鈕,用jquery實現表單的提交。想了想,用ajax好像不太好實現這種效果了,首先是ajax如何把上傳的檔案傳遞給後臺就遇到了瓶頸;其次再是如何配合ajax實現jque

Form檔案

1.form標籤: <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="file"

檔案的兩種方法

一.使用jquery外掛事件檔案上傳,使用方法如下: 1.引入jquery外掛中的相關檔案(可在jquery官網上查詢) jquery.ui.widget.js / / jquery.iframe-transport.js // jquery.fileu

CURL模擬post提交及相關常用引數的使用(包括提交同時檔案

<form action="doLogin" method="post"> <input type="text" name="username" value="admin"/> <input type="password" nam

C# Asp.net使用FormData對象實現ajax提交圖片

sync ext syn data .... error post req 序列化 1、html代碼: <form id="postForm"> 文件名:<input type="text" name="filename" />

FormData物件提交圖片/檔案

1.建立一個FormData空物件,然後使用append方法新增key/value var formdata = new FormData(); formdata.append('name','fdipzone'); formdata.append('gender','male');

Jquery不使用form非同步檔案的方法

    現在的專案中需要使用到不重新整理頁面的方式實現上傳檔案,實現方法如下: html程式碼:   檔案:<input id="file" type="file" name="file"/> <butt

怎麼用非同步ajax提交圖片檔案

通常我們提交(使用submit button)時,會把form中的所有表格元素的name與value組成一個queryString,提交到後臺。這用jQuery的方法來說,就是serialize。通過$('#postForm').serialize()可以對form表單進行序

vue + element-ui + axios 多檔案引數

vue加element ui 寫的一個專案,請求用的 axios 。在做表單提交的時候常常遇到需要在表單中傳檔案或者圖片,一般處理起來是先單個傳完檔案後得到路徑然後再表單提交一起傳給後端。如果介面是必須和表單其他引數一起傳過去的時候操作起來就是下面要講的了。 ps:介面是我寫

使用HTML的form檔案,需要考慮的幾個問題

應用系統中經常需要有檔案上傳功能,一般的做法都是使用HTML的<form>和<input type="file">,或者使用第三方檔案上傳元件,如swfupload和uploa

關於C++使用libcurl提交方式檔案時提交引數[同HTML]

       C++與Java後臺互動,避免不了使用HTTP協議,這時候對於C++來說libcurl就派上用場了,簡單的引數傳遞比較簡單,涉及到檔案上傳和下載的時候就稍微複雜點了,具體示例如下: int http_post_file(const char *url, c

H5用FormData物件提交檔案

1、如何使用 use multipart/form-data when your form includes any <input type="file"> elements. 2、怎麼

JS 將form檔案 一起提交

前提 需要引入jquery(不然無法使用$.ajax) //js function add(){ var formData = new FormData(document.querySelector("form"));//獲取form值