我正在尝试创建一个 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 为中心,并不能完全解决我的问题。