[英]Upload file to Django with Javascript
我有簡單的提取功能,我想上傳base64圖像。 功能如下:
function upload_to_server(canvasData){
console.log(canvasData); // that is data:image/png;base64,iVBORw0KGgoAAAANSUh.......
return fetch(api_url, {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: {photo: canvasData}
}).then(function (value) {
if(value.ok){
return value.json().then(function (response) {
debugger;
})
}
}).catch(function (reason) {
debugger;
})
}
我有簡單的Django視圖:
def upload_image(request):
print(request.POST)
pdb.set_trace()
當調用函數upload_to_server
時,該視圖成功執行,但是request.POST
為空。 它不能為空,它應該具有具有該base64值的關鍵photo
。
知道我做錯了什么嗎?
如果別人有同樣的問題。 我如下解決。
我將提取請求的主體更改為:
body: JSON.stringify({photo: canvasData})
並且我更改了django
視圖,因為數據在request.body
,而不在request.POST
import json
def upload_image(request):
body = json.loads(request.body)
photo = body['photo']
// Rest of the code
額外
照片是base64編碼的,但我需要將其作為媒體文件。 我將其轉換為媒體文件並將其保存到數據庫,如下所示:
def upload_image(request):
body = json.loads(request.body)
photo = body['photo']
img_format, img_str = photo.split(';base64,')
ext = img_format.split('/')[-1]
data = ContentFile(base64.b64decode(img_str), name='temp.' + ext) # You can save this as file instance.
try:
n_file = Files()
n_file.file = data
n_file.save()
return JsonResponse({'status': 'success'})
except Exception as err:
return JsonResponse({'status': 'failed'})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.