gpt4 book ai didi

c# - 通过 HTTPWebRequest 发送文件并在网络服务器上从 $_FILES 接收文件

转载 作者:太空宇宙 更新时间:2023-11-03 15:54:32 25 4
gpt4 key购买 nike

我的 .NET 应用程序通过 HttpWebRequest 将一个简单的文本文件发送到 Web 服务器。但是在网络服务器端,我总是得到一个空的 $_FILES 数组。

我阅读了所有这些问题和文章:

测试代码如下:

public static void UploadFile()
{
var boundary = "----------------------------" + DateTime.Now.Ticks.ToString("x");

var httpRequest = (HttpWebRequest)WebRequest.Create(@"https://test.com/upload.php");
httpRequest.Credentials = CredentialCache.DefaultNetworkCredentials;
httpRequest.AllowAutoRedirect = true;
httpRequest.MaximumAutomaticRedirections = 1;
httpRequest.Method = "POST";
httpRequest.ContentType = "multipart/form-data; boundary=" + boundary;
httpRequest.KeepAlive = true;

using (var requestStream = httpRequest.GetRequestStream())
{
var data = Encoding.UTF8.GetBytes("--" + boundary + "\r\n\r\n");
requestStream.Write(data, 0, data.Length);

data = Encoding.UTF8.GetBytes("Content-Disposition: form-data; name=\"MAX_FILE_SIZE\"\r\n\r\n");
requestStream.Write(data, 0, data.Length);

data = Encoding.UTF8.GetBytes("1048576"); // 1Mb
requestStream.Write(data, 0, data.Length);

data = Encoding.UTF8.GetBytes("--" + boundary + "\r\n");
requestStream.Write(data, 0, data.Length);

data = Encoding.UTF8.GetBytes("Content-Disposition: form-data; name=\"uploadedfile\"; filename=\"upload.txt\"\r\n");
requestStream.Write(data, 0, data.Length);

data = Encoding.UTF8.GetBytes("Content-Type: application/octet-stream\r\n\r\n");
requestStream.Write(data, 0, data.Length);

data = File.ReadAllBytes(@"D:\upload.txt");
requestStream.Write(data, 0, data.Length);

data = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--");
requestStream.Write(data, 0, data.Length);
}

using (var response = (HttpWebResponse)httpRequest.GetResponse())
using (var sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
Console.WriteLine(sr.ReadToEnd());
}

/upload.php:

exit (var_dump($_FILES));

在控制台中,输出始终为:array(0){}
请帮忙。

最佳答案

根据评论写出答案。

Fiddler让您在发出请求和检索响应时检查通过线路发送的数据。它是一个代理并且是免费的(目前):-)

当遇到这样的问题时,必须手动让它工作,然后尝试以编程方式重新创建请求并检查请求以查看它是否以正确的方式构建。

关于c# - 通过 HTTPWebRequest 发送文件并在网络服务器上从 $_FILES 接收文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24160602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com