我正在嘗試使用 AJAX 將帶有檔案的表單上傳到我的服務器,但 Symfony 并沒有像它應該的那樣決議請求正文。這是我的PHP:
#[Route('/api/upload/file', name: "api_upload_file", methods: ['POST'])]
public function create(Request $request): JsonResponse
{
dump($request->files->all());
dump($request->request->all());
dump($request->getContent());
...
和轉儲輸出(檔案部分被剪掉,因為它占用大量空間):
[]
[]
"""
------WebKitFormBoundaryh4t0I09h9iTRNGme
Content-Disposition: form-data; name="subcategory"
1
------WebKitFormBoundaryh4t0I09h9iTRNGme
Content-Disposition: form-data; name="main_image"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundaryh4t0I09h9iTRNGme
Content-Disposition: form-data; name="more_images"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundaryh4t0I09h9iTRNGme
Content-Disposition: form-data; name="original_version"
------WebKitFormBoundaryh4t0I09h9iTRNGme
Content-Disposition: form-data; name="version"
------WebKitFormBoundaryh4t0I09h9iTRNGme
Content-Disposition: form-data; name="original_title"
------WebKitFormBoundaryh4t0I09h9iTRNGme
Content-Disposition: form-data; name="title"
"""
請求清楚地通過了,所以我不明白為什么沒有決議內容
以防萬一,這里是 javascript 部分:(這看起來像 JQuery 但不是)
form.submit(e => {
e.preventDefault();
let formData = createItemForm.formData();
$.ajax('/api/upload/file', {
headers: {
'Content-Type': 'multipart/form-data'
},
body: formData
})
.then(data => data.json())
.then(json => {
console.log('uploaded');
});
});
我應該如何獲取 $request->files 和 $request->request 中的檔案和表單值?
uj5u.com熱心網友回復:
Content-Type嘗試發出這樣的多部分請求時,請勿自己指定標頭。該標頭需要包含邊界值(以便接收者知道如何決議此請求) - 如果您自己指定它,只是multipart/form-data,那么它將丟失。
這些請求庫通常知道如何根據您傳入的 FormData 實體自行正確設定它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/441567.html
