首页 > 解决方案 > 从 Xamarin CrossMedia 插件上传文件到服务器

问题描述

我正在开发一个基于 xamarin 表单的跨平台移动应用程序,老实说,我是这项技术的新手。

我正在使用此 plgin 将文件上传到服务器

https://github.com/CrossGeeks/FileUploaderPlugin

但它似乎根本不起作用,在服务器上我根本没有得到任何 POST 值。

我已经尝试过 xamarin 社区论坛,但它也没有帮助。

我想可能会有这样的问题

  1. 路径问题,但我在屏幕上打印了路径并且它是正确的

  2. 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 字符串,但什么也没有。

标签: c#.netxamarinxamarin.forms

解决方案


我知道这可能看起来很愚蠢,但我只是发布答案,所以有人可能不会忘记这个简单的事情并将其添加到调试清单中。

简单的问题是 http 和 https,Web 服务器 URL 必须使用“https”而不是 http,也许也有使用 http 的方法,但是在没有“https”的情况下不允许使用其他代码没有任何问题一点也不。


推荐阅读