【问题标题】:How to upload a file to an API如何将文件上传到 API
【发布时间】:2015-03-06 15:41:56
【问题描述】:

假设我有一个 PHP 服务器。我正在为此服务器创建一个 API。我希望收到一个请求,其中

$_POST["FileContent"]

将包含文件内容和

$_POST["FileName"]

将包含文件的名称。我的问题是我没有做过类似的事情,此时我可以上传文件的唯一方法是使用文件类型的输入。如果我只是以二进制方式加载文件,那么我想使用最佳实践方法,并且我还想确保内容确实是图像内容,而不是 PHP 上传注入。我该怎么做?

【问题讨论】:

  • 您可以使用 base64 函数,然后在服务器上发布数据。或者您可以使用 $_FILES 进行经典上传...
  • base64 在哪里?安卓? IOS?我的网络游乐场?
  • 我真的很想知道为什么我的问题如此糟糕以至于被否决。我在这里错过了什么吗?我在问一种没有 的方法
  • 不要在意投反对票的人,大多数时候他们只是无知无法提供帮助,他们只是投反对票以说服自己值得某事
  • 我要感谢 Albanx 和 Kylehyde215,他们最初的想法让我在服务器端解决了这个问题,我还在操场上创建了一个非常好的功能来测试它。谢谢你们。

标签: php httprequest image-uploading


【解决方案1】:

您应该在客户端对文件内容进行base64编码,并在API端进行base64解码。

// client (pseudo-code)
data = {FileName: "someFileName", FileContents: base64Encode(someFile)}

// api
$fileContents = base64_decode($_POST['FileContents']);
$fileName     = $_POST['FileName'];

file_put_contents('path/to/upload/' . $fileName, $fileContents);

【讨论】:

  • 这听起来不错,我会试试看。不幸的是,我必须花几分钟,但我会测试你的想法,如果它是一个有效的答案,那么我会上传并接受它。所以你是说我应该基于任何客户端 64
  • 是的。无论向 API 发送请求,都需要对文件内容进行 base64 编码。现在,如果该客户端只是一个 javascript 前端,我不确定这是否可行。也许使用新的 File API,但我对它不太熟悉。
  • File Api 和 base64 函数都可以。重要的是要知道如何选择文件:如果是 html,则使用文件 API 并使用 FORMDATA 使用 ajax 发布文件,如果是 android,那么我很确定有一个 base64 内置函数
  • 我已经知道这个答案至少值得一票,但我仍在创建概念验证
猜你喜欢
  • 2019-08-01
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 2019-07-25
  • 2021-10-14
  • 2019-02-27
  • 1970-01-01
相关资源
最近更新 更多