问题描述
在服务器上,我有一个 PHP 文件可以根据请求提供文件,它可以从 Web 浏览器正常工作,并且下载了所需的文件。 现在我需要使用 WebRequest 从 C# 应用程序下载文件,但它只保存一个空文件。
这是PHP服务器端:
<?PHP
$file = basename($_POST['File']);
$file = '../Uploads/' . $file;
if(!file_exists($file)){ // file does not exist
die('file not found');
} else {
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-disposition: attachment; filename=$file");
header("Content-Type: application/zip");
header("Content-transfer-encoding: binary");
// read the file from disk
readfile($file);
}
?>
在 C# 应用程序中,我使用以下代码:
public void DownloadFileAsync(string file)
{
ct = new CancellationTokenSource();
Task.Factory.StartNew(() =>
{
try
{
WebRequest request = WebRequest.Create(serverURL);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
byte[] buffer;
buffer = Encoding.ASCII.GetBytes("File=" + file);
request.ContentLength = buffer.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(buffer,buffer.Length);
//get response
using (WebResponse response = request.GetResponse())
using (Stream responseStream = response.GetResponseStream())
{
using (FileStream fileStream = File.Create(Path.Combine(sharedFolder,values["File"])))
{
responseStream.copyTo(fileStream);
}
} }
catch (Exception ex)
{
//
}
},ct.Token,TaskCreationoptions.LongRunning,TaskScheduler.Default);
}
解决方法
它工作正常,我刚刚发现我在 serverURL 中传递了错误的 url