我正在尝试创建一个 Web API,允许某人(最好是一个程序)提交一个大型二进制文件并接收该文件的 ID 作为回报。我有一些带有表单 ( method="POST"
) 的 HTML 和一个<input type="file" ...>
可以使用标准 multipart/form-data MIME 类型将文件提交到某些 PHP 代码的元素。PHP 生成 ID 并将其作为结果打印出来。因为 PHP 只是打印 ID,而不是重定向到另一个 HTML 页面或生成 HTML 本身,所以它不是很漂亮,但希望对于程序化文件提交 API 的预期用例来说已经足够了。
到现在为止还挺好。当我想让客户端代码捕获返回的 ID 并使用它调用其他 API 时,这会变得很棘手。如果客户端是带有 JavaScript 的网页,客户端似乎应该使用XMLHttpRequest
,但我不清楚如何让该对象使用用户通过文件输入控件选择的文件。
我希望相同的 API 既可以用于手动操作的 Web 表单(便于 UI 和测试),也可以用于纯编程调用(如 JavaScript、curl/libcurl 等)。我不希望 PHP 使用查询字符串中的 ID 重定向到另一个页面,并且我不希望直接返回 HTML。我只想要一个简单的文件,ID out API。
由于这被证明是困难的,我怀疑我做错了事情。我对替代设计持开放态度,但我更愿意让事情尽可能简单。我发现了一个有点类似的问题,但它过于以 Java 为中心,并不能完全解决我的问题。