c# - 从 Xamarin CrossMedia 插件上传文件到服务器
问题描述
我正在开发一个基于 xamarin 表单的跨平台移动应用程序,老实说,我是这项技术的新手。
我正在使用此 plgin 将文件上传到服务器
https://github.com/CrossGeeks/FileUploaderPlugin
但它似乎根本不起作用,在服务器上我根本没有得到任何 POST 值。
我已经尝试过 xamarin 社区论坛,但它也没有帮助。
我想可能会有这样的问题
路径问题,但我在屏幕上打印了路径并且它是正确的
URL 被击中我已经通过在服务器上执行一些其他操作来验证,URL 也被击中,它执行了其他操作但没有得到任何 POST
这是我的 C# 代码
string url = "http://example.com/file_upload.php";
Dictionary<string, string> parameters = new Dictionary<string, string>();
parameters.Add("fileName", "Kamran");
// filePath returns correct value I have verified that
FilePathItem fpi = new FilePathItem("file", filePath);
Dictionary<string, string> header = new Dictionary<string, string>();
header.Add("Content-Type", "multipart/form-data");
await CrossFileUploader.Current.UploadFileAsync(url,fpi,header, parameters, null);
这是我的服务器端代码
<?php
$n = basename($_FILES["file"]["name"]);
$target_dir = "uploads/";
$target_file = $target_dir . $n;
$senderName = $_POST['fileName'];
if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["file"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file. : " .$n.", sender: " . $senderName;
}
?>
我没有看到任何已发布的变量,我也尝试将所有已发布的变量保存为 JSON 字符串,但什么也没有。
解决方案
我知道这可能看起来很愚蠢,但我只是发布答案,所以有人可能不会忘记这个简单的事情并将其添加到调试清单中。
简单的问题是 http 和 https,Web 服务器 URL 必须使用“https”而不是 http,也许也有使用 http 的方法,但是在没有“https”的情况下不允许使用其他代码没有任何问题一点也不。
推荐阅读
- laravel - Laravel Voyager:面包项目的访问控制
- c# - 处理作用域方法
- pdf - 如何在 mpdf 库的源 pdf 文件中写入文本?
- c# - 无法在 .Net 核心中运行 Grpc 解决方案
- java - 将参数传递给 makefile
- openedge - 如何使用 OpenEdge 调试器比较查询文本和缓冲区列表?
- javascript - 从返回的字符串创建单个数组
- angular - 未捕获的错误:组件 DossiersListComponent 不是任何 NgModule 的一部分,或者该模块尚未导入您的模块
- c# - C# 控制台应用程序中未显示货币符号
- postgresql - 错误:类型时间戳的输入语法无效