近期在做上传文件到服务器的需求,所以拿出来给大家共享。
没有进度条的
public class VrPostFile
{
///
/// 将本地文件上传到指定的服务器(HttpWebRequest方法)
///
/// 文件上传到的服务器
/// 要上传的本地文件(全路径)
/// 文件上传后的名称
/// 上传进度条
/// 成功返回1,失败返回0
public static int Upload_Request2(string address, string fileNamePath, string saveName)
{
int returnValue = 0; // 要上传的文件
FileStream fs = new FileStream(fileNamePath, , );
BinaryReader r = new BinaryReader(fs); //时间戳
string strBoundary = "----------" + ("x");
byte[] boundaryBytes = ("\r\n--" + strBoundary + "\r\n"); //请求头部信息
StringBuilder sb = new StringBuilder();
("--");
(strBoundary);
("\r\n");
("Content-Disposition: form-data; name=\"");
("uploaded_file");
("\"; filename=\"");
(saveName);
("\";");
("\r\n");
("Content-Type: ");
("application/octet-stream");
("\r\n");
("\r\n");
string strPostHeader = ();
byte[] postHeaderBytes = Encoding.(strPostHeader); // 根据uri创建HttpWebRequest对象
HttpWebRequest httpReq = (HttpWebRequest)(new Uri(address));
= "POST"; //对发送的数据不使用缓存
= false; //设置获得响应的超时时间(300秒)
= 300000;
= "multipart/form-data; boundary=" + strBoundary;
long length = + + ;
long fileLength = ;
= length;
try
{
//每次上传4k
int bufferLength = 4096;
byte[] buffer = new byte[bufferLength]; //已上传的字节数
long offset = 0; //开始上传时间
DateTime startTime = ;
int size = (buffer, 0, bufferLength);
Stream postStream = (); //发送请求头部消息
(postHeaderBytes, 0, );
while (size > 0)
{
(buffer, 0, size);
offset += size;
();
size = (buffer, 0, bufferLength);
}
//添加尾部的时间戳
(boundaryBytes, 0, );
(); //获取服务器端的响应
WebResponse webRespon = ();
Stream s = ();
//读取服务器端返回的消息
StreamReader sr = new StreamReader(s);
String sReturnString = ();
();
();
if (sReturnString == "Success")
{
returnValue = 1;
}
else if (sReturnString == "Error")
{
returnValue = 0;
}
}
catch
{
returnValue = 0;
}
finally
{
();
();
}
return returnValue;
}
}
int rlt= VrPostFile.Upload_Request2("http://localhost/vr/ci//UploadTxt",+ "/341241412-15_1.txt", "341241412-15_1.txt");
第二种方式,有进度条提醒
/jingdian14/article/details/7885416#
两个方式都支持断点续传。