将文件上传到服务器 [英] Uploading files to server

查看:109
本文介绍了将文件上传到服务器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,请问您是否可以建议您使用Webrequests在服务器上进行上传?我如何在另一台服务器上创建stringBuilder?为何返回此结果?
"
< h1>软件错误:</h1>
< pre>格式错误的多部分POST
</pre>
< p>
要获取帮助,请发送电子邮件给网站管理员(< a href ="mailto:webmaster@ulozto.cz"> webmaster@ulozto.cz</a>),并显示此错误消息
以及错误的时间和日期.

</p>
"

我的程序代码:
"
公共字符串QUploadToUlozto(字符串FilePath,字符串用户名,
字符串密码,整数AccountType)
{
FileSystemInfo _file = new FileInfo(FilePath);
DateTime dateTime2 = DateTime.Now;
long l2 = dateTime2.Ticks;
字符串s1 ="----------" + l2.ToString("x");
System.Net.HttpWebRequest httpWebRequest = GetWebrequest(s1);
使用(System.IO.FileStream fileStream = new FileStream(_file.FullName,
FileMode.Open,FileAccess.Read,FileShare.Read))
{//设置上传标题
byte [] bArr1 = Encoding.ASCII.GetBytes("\ r \ n--" + s1 +"\ r \ n");
字符串s2 = GetRequestMessage(s1,_file.Name,用户名,密码,AccountType);
byte [] bArr2 = Encoding.UTF8.GetBytes(s2);
流memStream = new MemoryStream();
memStream.Write(bArr1,0,bArr1.Length);
memStream.Write(bArr2,0,bArr2.Length);
字节[]缓冲区=新字节[1024];
int bytesRead = 0;//将文件读入memStream.
while((bytesRead = fileStream.Read(buffer,0,buffer.Length))!= 0)
{
memStream.Write(buffer,0,bytesRead);

}
httpWebRequest.ContentLength = memStream.Length;
fileStream.Close();

流requestStream = httpWebRequest.GetRequestStream();
//将文件从memStream发送到Rapidshare.com
memStream.Position = 0;
byte [] tempBuffer =新的byte [memStream.Length];
memStream.Read(tempBuffer,0,tempBuffer.Length);
memStream.Close();
requestStream.Write(tempBuffer,0,tempBuffer.Length);
requestStream.Close();
}
字符串tm =";
使用(Stream stream = httpWebRequest.GetResponse().GetResponseStream())
使用(StreamReader streamReader = new StreamReader(stream))
{
tm = streamReader.ReadToEnd();

}//从Rapidshare获取响应并返回链接.
返回tm;
}

私有字符串GetRequestMessage(字符串边界,字符串FName,
字符串用户名,字符串密码,整数AccountType)
{
System.Text.StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append(-");
stringBuilder.Append(boundary);
stringBuilder.Append("\ r \ n");
stringBuilder.Append("Content-Disposition:form-data; name = \" toolmode2 \");
stringBuilder.Append("\ r \ n");
stringBuilder.Append("\ r \ n");
stringBuilder.Append("1");
stringBuilder.Append("\ r \ n");
stringBuilder.Append(boundary);
stringBuilder.Append("\ r \ n");
if(AccountType!= 0)//免费用户
{
}//否则为免费用户
//文件名

stringBuilder.Append(boundary);
stringBuilder.Append("\ r \ n");
stringBuilder.Append("Content-Disposition:form-data; name = \");
stringBuilder.Append("upfile_0");
stringBuilder.Append("\"; filename = \");
stringBuilder.Append(FName);
stringBuilder.Append("\");
stringBuilder.Append("\ r \ n");
//文件类型
stringBuilder.Append("Content-Type:");
stringBuilder.Append("multipart/form-data");
stringBuilder.Append("\ r \ n");
stringBuilder.Append("Content-Transfer-Encoding:");
stringBuilder.Append("binary");
stringBuilder.Append("\ r \ n");
stringBuilder.Append("\ r \ n");

返回stringBuilder.ToString();
}

私人CookieContainer _cockies =新的CookieContainer();
私有HttpWebRequest GetWebrequest(字符串边界)
{//准备上传
WebClient wc =新的WebClient();
System.Uri uri =新的Uri("http://up.uloz.to/ul/upload.cgi?tmp_sid=" +"4b8952990b8b1518ab1729728394bh29" +& user_id = 0& host = uloz.to");

System.Net.HttpWebRequest httpWebRequest =(
System.Net.HttpWebRequest)System.Net.WebRequest.Create(uri);
httpWebRequest.CookieContainer = _cockies;//设置Rapidshare的Cookies
httpWebRequest.ContentType ="multipart/form-data; boundary =" + boundary;
//完全像Rapidshare Manager一样设置Fake userAgent
httpWebRequest.UserAgent ="MultiloadUploader";
//设置假引用
httpWebRequest.Referer ="http://uloz.to/";
httpWebRequest.Method ="POST";
httpWebRequest.KeepAlive = true;
httpWebRequest.Timeout = -1;
httpWebRequest.Headers.Add("Accept-Charset","iSO-8859-1,utf-8; q = 0.7,*; q = 0.7");
httpWebRequest.Headers.Add("Accept-Encoding","identity");
httpWebRequest.Headers.Add("Accept-Language","de-de; q = 0.5,en; q = 0.3");
返回httpWebRequest;
}
"

对不起,我的英语和汉语不好:)

please can u advice me with upload on server with your method using webrequests? How i can create stringBuilder on another server? and why its return this?
"
<h1>Software error:</h1>
<pre>Malformed multipart POST
</pre>
<p>
For help, please send mail to the webmaster (<a href="mailto:webmaster@ulozto.cz">webmaster@ulozto.cz</a>), giving this error message
and the time and date of the error.

</p>
"

my code of program :
"
public string QUploadToUlozto(string FilePath, string username,
string password, int AccountType)
{
FileSystemInfo _file = new FileInfo(FilePath);
DateTime dateTime2 = DateTime.Now;
long l2 = dateTime2.Ticks;
string s1 = "----------" + l2.ToString("x");
System.Net.HttpWebRequest httpWebRequest = GetWebrequest(s1);
using (System.IO.FileStream fileStream = new FileStream(_file.FullName,
FileMode.Open, FileAccess.Read, FileShare.Read))
{//Set Headers for Uploading
byte[] bArr1 = Encoding.ASCII.GetBytes("\r\n--" + s1 + "\r\n");
string s2 = GetRequestMessage(s1, _file.Name, username, password, AccountType);
byte[] bArr2 = Encoding.UTF8.GetBytes(s2);
Stream memStream = new MemoryStream();
memStream.Write(bArr1, 0, bArr1.Length);
memStream.Write(bArr2, 0, bArr2.Length);
byte[] buffer = new byte[1024];
int bytesRead = 0;//Read File into memStream.
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
{
memStream.Write(buffer, 0, bytesRead);

}
httpWebRequest.ContentLength = memStream.Length;
fileStream.Close();

Stream requestStream = httpWebRequest.GetRequestStream();
//Send File from memStream to Rapidshare.com
memStream.Position = 0;
byte[] tempBuffer = new byte[memStream.Length];
memStream.Read(tempBuffer, 0, tempBuffer.Length);
memStream.Close();
requestStream.Write(tempBuffer, 0, tempBuffer.Length);
requestStream.Close();
}
string tm = "";
using (Stream stream = httpWebRequest.GetResponse().GetResponseStream())
using (StreamReader streamReader = new StreamReader(stream))
{
tm = streamReader.ReadToEnd();

}//Get Response from Rapidshare and Return the Links.
return tm;
}

private string GetRequestMessage(string boundary, string FName,
string username, string password, int AccountType)
{
System.Text.StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append("--");
stringBuilder.Append(boundary);
stringBuilder.Append("\r\n");
stringBuilder.Append("Content-Disposition: form-data; name=\"toolmode2\"");
stringBuilder.Append("\r\n");
stringBuilder.Append("\r\n");
stringBuilder.Append("1");
stringBuilder.Append("\r\n");
stringBuilder.Append(boundary);
stringBuilder.Append("\r\n");
if (AccountType != 0)//Free User
{
}//else if Free User
//File Name

stringBuilder.Append(boundary);
stringBuilder.Append("\r\n");
stringBuilder.Append("Content-Disposition: form-data; name=\"");
stringBuilder.Append("upfile_0");
stringBuilder.Append("\"; filename=\"");
stringBuilder.Append(FName);
stringBuilder.Append("\"");
stringBuilder.Append("\r\n");
//File Type
stringBuilder.Append("Content-Type: ");
stringBuilder.Append("multipart/form-data");
stringBuilder.Append("\r\n");
stringBuilder.Append("Content-Transfer-Encoding: ");
stringBuilder.Append("binary");
stringBuilder.Append("\r\n");
stringBuilder.Append("\r\n");

return stringBuilder.ToString();
}

private CookieContainer _cockies = new CookieContainer();
private HttpWebRequest GetWebrequest(string boundary)
{//Prepare for Uploading
WebClient wc = new WebClient();
System.Uri uri = new Uri("http://up.uloz.to/ul/upload.cgi?tmp_sid=" + "4b8952990b8b1518ab1729728394bh29" + "&user_id=0&host=uloz.to");

System.Net.HttpWebRequest httpWebRequest = (
System.Net.HttpWebRequest)System.Net.WebRequest.Create(uri);
httpWebRequest.CookieContainer = _cockies;//Set Cookies for rapidshare
httpWebRequest.ContentType = "multipart/form-data; boundary=" + boundary;
//Set Fake userAgent exactly like Rapidshare Manager
httpWebRequest.UserAgent = "MultiloadUploader";
//Set Fake Referer
httpWebRequest.Referer = "http://uloz.to/";
httpWebRequest.Method = "POST";
httpWebRequest.KeepAlive = true;
httpWebRequest.Timeout = -1;
httpWebRequest.Headers.Add("Accept-Charset", "iSO-8859-1,utf-8;q=0.7,*;q=0.7");
httpWebRequest.Headers.Add("Accept-Encoding", "identity");
httpWebRequest.Headers.Add("Accept-Language", "de-de;q=0.5,en;q=0.3");
return httpWebRequest;
}
"

sorry for my bad english and thanx :)

推荐答案

写道:​​

与您的方法



用什么方法?你在跟谁说话 ?如果涉及到某篇文章,则作者不一定会看到该文章,而是在该文章下提供了一个论坛供您与他/她联系.



What method ? Who are you talking to ? If this relates to an article, the author is not going to necessarily see it, and a forum is provided under the article for you to contact him/her.


对不起...我错误的原始代码在这里:使用C#简单地将文件上传到Rapidshare帐户方法 [ ^ ]而我很绝望,因为我不知道如何制作,或者不知道有人可以将更好的代码上传到不同的服务器吗?谢谢;)
emm sorry...my bad, original code is here : Simple Upload File to Rapidshare Account Method using C#[^] and I am desperate, because I dont know how make it, or know someone a better code for upload to different servers? thanks ;)


这篇关于将文件上传到服务器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆