我試圖創建一個Web API,允許一個人(當然,最好的程序)提交一個大的二進制文件,並收到一個ID爲回報文件。我有一些HTML與形式(method="POST"
),並且可以提交一個文件到一些PHP代碼,使用標準的multipart/form-data的MIME類型的<input type="file" ...>
元件。 PHP生成該ID並將其打印出來作爲其結果。因爲PHP只是打印ID,而不是重定向到另一個HTML頁面或生成HTML本身,所以它不是很漂亮,但希望對於編程文件提交API的預期用例來說足夠了。我應該如何編寫一個接收文件的Web API?
到目前爲止,這麼好。當我想讓客戶端代碼捕獲返回的ID並使用其調用其他API時,會變得棘手。如果客戶端是使用JavaScript的網頁,好像客戶端應該使用XMLHttpRequest
,但我不清楚如何獲取該對象使用的文件與文件輸入控件中選擇的用戶。
我很喜歡用手動操作的網頁表單(用於簡單的用戶界面和測試)和純粹的程序化調用(如使用JavaScript,curl/libcurl等)來使用相同的API。我不希望PHP使用查詢字符串中的ID向另一個頁面發出重定向,並且我不想直接返回HTML。我只想要一個簡單的文件,ID out API。
由於這是證明很難,我懷疑我處理事情的方式不對。我願意接受其他設計,但我寧願儘可能保持簡單。我發現有一個similar question,但它也是以Java爲中心的,並不能解決我的問題。
是您的問題:「我如何使用JavaScript來上傳用戶選擇文件並捕獲返回的文檔?」?這似乎是你遇到的唯一問題,但你的擔心似乎與服務器端的設計有關。 – Quentin
或多或少。該文件可以是用戶選擇的(比如在表單中),也可以通過編程方式提供(如從腳本中提供)。返回的文檔實際上只是一個ID,無論什麼包裝都是有意義的,而且客戶端JavaScript可以使用它。我擔心的是服務器端代碼與我的客戶端用例兼容。我很樂意調整解決問題。 –