【发布时间】:2012-10-15 06:13:55
【问题描述】:
我正在尝试创建一个 Web API,允许某人(最好是程序)提交一个大型二进制文件并接收该文件的 ID 作为回报。我有一些带有表单 (method="POST") 和 <input type="file" ...> 元素的 HTML,可以使用标准的 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。
由于事实证明这很困难,我怀疑我做事的方式不对。我对替代设计持开放态度,但我更愿意让事情尽可能简单。我找到了一个有点 similar question,但它太以 Java 为中心,并不能完全解决我的问题。
【问题讨论】:
-
您的问题是“如何使用 JavaScript 上传用户选择的文件并捕获返回的文档?”?这似乎是您遇到的唯一问题,但您担心的其他问题似乎与服务器端的设计有关。
-
或多或少。该文件可以由用户选择(如在表单中),或以编程方式提供(如从脚本中)。返回的文档实际上只是一个 ID,具有任何有意义的包装,并且可供客户端 JavaScript 使用。我担心的是服务器端代码与我的客户端用例兼容。我很乐意调整其中一个来解决问题。
标签: php javascript web-services api file-upload