【问题标题】:Getting a CSV file via HTTP POST action in C#通过 C# 中的 HTTP POST 操作获取 CSV 文件
【发布时间】:2020-08-17 14:10:38
【问题描述】:

我有这个 PHP 代码,它将接受一个 CSV 文件并将其移动到服务器上的一个目录中。 我正在努力使用 C# 控制台应用程序 .NET 4.7.2 Framework 做同样的事情

我看过一些关于 C# Web 编程的视频,但对这些方法感到困惑 套接字、侦听器和 TCP/IP。如果有人可以翻译代码,我将不胜感激 下面到 C#,所以我至少会有一个工作示例来开始实验和学习。

谢谢!

$target_dir = __dir__ . '/uploads';
$default_datasource = 'unknown';
$accepted_mimes = ['text/csv'];

####################

// Make sure the request has expected fields.
if (isset($_POST['action']) && $_POST['action'] === 'upload') {
    $file_path = $target_dir . '/' . ($_POST['datasource'] ?? $default_datasource) . '/' . $_FILES['file']['name'];
    $file_dir  = dirname($file_path);
    $file_mime = $_FILES['file']['type'];
    $file_name = $_FILES['file']['name'];

    if (!in_array($file_mime, $accepted_mimes, true)) {
        $accepted_mimes = implode(',', $accepted_mimes);
        throw new RuntimeException("Invalid file type: '{$file_mime}'. Only {$accepted_mimes} is acceptable");
    }

    if (file_exists($file_path)) {
        throw new RuntimeException('File already exists');
    }

    if (!is_dir($file_dir)) {
        if (!mkdir($file_dir) && !is_dir($file_dir)) {
            throw new RuntimeException(sprintf('Directory "%s" was not created', $file_dir));
        }
    }


    if (move_uploaded_file($_FILES['file']['tmp_name'], $file_path)) {
        echo 'OK';

    } else {
        throw new RuntimeException('Failed to upload file');
    }


}

【问题讨论】:

  • 很遗憾,SO 不是编码服务,虽然我们可以帮助您解决问题,但为您编码并不是 SO 通常的用途。
  • 我明白这一点,但我想得到一些指示,没有任何我可以修改的工作示例吗?有总比没有好...
  • 尝试搜索c# get file from http request

标签: c# php http https http-get


【解决方案1】:

C# 控制台应用程序是客户端应用程序。只有直接使用已安装 PC 的人才能与您的控制台应用程序进行交互。 PHP 是一种服务器端语言,可以通过 HTTP 协议通过 Internet 访问。

我们无法在 SO 上为您编写应用程序,但是,我可以为您指明正确的方向。问问自己:为什么要使用 C# 控制台应用程序?我需要这个应用程序在互联网上工作还是它可以在本地/离线工作?

如果你的标题是正确的,并且你想使用 HTTP Post,你将需要创建一个服务器端 C# 应用程序——而不是一个控制台应用程序(它不会工作)。我建议您研究一下 ASP.net Core MVC,您可以说它是基于 C# 的服务器端应用程序的“默认”选择。


这是我在 MSDN 上找到的一些示例代码,用于 asp.net CORE C# 应用程序:

1) 创建 Razor 页面示例应用

2) 新建一个razer页面Pages/BufferedSingleFileUploadPhysical.cshtml

3) 添加如下代码

BufferedSingleFileUploadPhysical.CSHTML(雷蛇页面)

<form enctype="multipart/form-data" method="post">
<dl>
    <dt>
        <label asp-for="FileUpload.FormFile"></label>
    </dt>
    <dd>
        <input asp-for="FileUpload.FormFile" type="file">
        <span asp-validation-for="FileUpload.FormFile"></span>
    </dd>
</dl>
<input asp-page-handler="Upload" class="btn" type="submit" value="Upload" />

来源:https://docs.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads?view=aspnetcore-3.1

【讨论】:

  • 谢谢,我正在运行 windows server ,我想运行一个 C# 应用程序来获取发布的文件(类似于 PHP 代码),然后我想继续使用它做一些工作C# 应用程序...
  • 本文档应该为您提供有关如何为服务器端 asp.net "C#" webapps 上传文件的可靠解释:docs.microsoft.com/en-us/aspnet/core/mvc/models/… 我将使用此源中的一些示例代码更新我上面的评论 ~
  • 如果新编辑对您有用,请选择我的评论作为答案:)
猜你喜欢
  • 2010-11-01
  • 1970-01-01
  • 2010-11-11
  • 2019-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多