C#从PHP网页下载文件

时间:2021-06-25 16:08:05

标签: c# php webrequest

在服务器上,我有一个 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, 0, 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);
    }

1 个答案:

答案 0 :(得分:0)

它工作正常,我刚刚发现我在 serverURL 中传递了错误的 url

相关问题