在 C# 中通过 HTTP POST 操作获取 CSV 文件
Getting a CSV file via HTTP POST action in C#
我有这个 PHP 代码可以接受 CSV 文件并将其移动到服务器上的目录中。
我正在努力使用 C# 控制台应用程序 .NET 4.7.2 Framework
做完全相同的事情
我看过一些关于 C# 网络编程的视频,但对以下方法感到困惑
套接字、监听器和 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');
}
}
C# 控制台应用程序是客户端应用程序。您的控制台应用程序只会与直接使用已安装 PC 的人进行交互。 PHP 是一种服务器端语言,可以通过 HTTP 协议在互联网上访问。
我们无法在 SO 上为您编写应用程序,但是,我可以为您指明正确的方向。问问自己:为什么要使用 C# 控制台应用程序?我需要这个应用程序才能在 Internet 上运行吗?它是否可以运行 locally/offline?
如果您的标题是正确的,并且您想使用 HTTP Post,您将需要制作服务器端 C# 应用程序——而不是控制台应用程序(这将无法运行)。我建议您查看 ASP.net Core MVC,您可以说它是基于 C# 的服务器端应用程序的 "default" 选择。
这是我在 MSDN 上为 asp.net 核心 C# 应用程序找到的一些示例代码:
1) 创建 Razor Pages 示例应用程序
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
我有这个 PHP 代码可以接受 CSV 文件并将其移动到服务器上的目录中。 我正在努力使用 C# 控制台应用程序 .NET 4.7.2 Framework
做完全相同的事情我看过一些关于 C# 网络编程的视频,但对以下方法感到困惑 套接字、监听器和 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');
}
}
C# 控制台应用程序是客户端应用程序。您的控制台应用程序只会与直接使用已安装 PC 的人进行交互。 PHP 是一种服务器端语言,可以通过 HTTP 协议在互联网上访问。
我们无法在 SO 上为您编写应用程序,但是,我可以为您指明正确的方向。问问自己:为什么要使用 C# 控制台应用程序?我需要这个应用程序才能在 Internet 上运行吗?它是否可以运行 locally/offline?
如果您的标题是正确的,并且您想使用 HTTP Post,您将需要制作服务器端 C# 应用程序——而不是控制台应用程序(这将无法运行)。我建议您查看 ASP.net Core MVC,您可以说它是基于 C# 的服务器端应用程序的 "default" 选择。
这是我在 MSDN 上为 asp.net 核心 C# 应用程序找到的一些示例代码:
1) 创建 Razor Pages 示例应用程序
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