如何在远程服务器上写入CSV文件
本文关键字:CSV 文件 服务器 | 更新日期: 2023-09-27 18:25:28
我正试图将一些输出写入服务器上的.csv文件。我使用了以下代码,但文件中仍然没有输出。意味着什么都没写。我的代码在这里
void WriteInRegister(DataRow userdata)
{
HttpWebRequest reqHTTP;
StringBuilder result = new StringBuilder();
try
{
reqHTTP = (HttpWebRequest)HttpWebRequest.Create(new Uri("http://10.10.10.10/config/RequestPlacer.csv"));
reqHTTP.Credentials = new NetworkCredential("usename", "password");
if (reqHTTP != null)
{
reqHTTP.ContentType = "application/octet-stream";
reqHTTP.Method = WebRequestMethods.File.UploadFile;
}
string postdata = (userdata[0].ToString() + ",MacId," + DateTime.Now.ToShortDateString()).ToString();
byte[] text = Encoding.UTF8.GetBytes(postdata);
reqHTTP.ContentLength = text.Length;
/* WebClient wcClient = new WebClient();
wcClient.Credentials = new NetworkCredential("usename", "password");
wcClient.UseDefaultCredentials = true;*/
//wcClient.OpenWrite(new Uri("http://10.10.10.10/config/RequestPlacer.csv"), postdata);
// string path = System.Web.HttpContext.Current.Server.MapPath("http://10.10.10.10/config/RequestPlacer.csv");
reqHTTP.AllowWriteStreamBuffering = true;
Stream writer = reqHTTP.GetRequestStream();
/* wcClient.Headers.Add("Content-Type", "application/csv");
wcClient.UploadString(new Uri("http://10.10.10.10/config/RequestPlacer.csv"), "POST", postdata);*/
StreamWriter streamwriter = new StreamWriter(writer);
streamwriter.WriteLine(postdata);
streamwriter.Close();
}
catch (Exception exe)
{
MessageBox.Show(exe.Message);
}
}
异常为("请求已中止:请求已取消。")
我认为问题在于,您写入流的内容与Content-Length
标头中指示的长度不匹配:因为您使用streamwriter.WriteLine
,所以您还写入了一个回车+换行,该换行不计入您发送的内容长度。
例如,如果您的postdata
是"foo"
,则Encoding.UTF8.GetBytes(postdata).Length
将返回3,但streamwriter.WriteLine(postdata)
实际上将写入"foo'r'n"
,即5个字节。
您只需要使用Write
而不是WriteLine
(或者如果您想保留它,则在内容长度中计算新行)