FastAPI 문서를 따랐고 js로 작성한 클라이언트에서 FastAPI로 작성한 서버로 파일을 보내려고합니다.
내 HTML :
<html>
<head>
<script src="https://code.jquery.com/jquery-2.0.3.js" integrity="sha256-lCf+LfUffUxr81+W0ZFpcU0LQyuZ3Bj0F2DQNCxTgSI=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
</head>
<body>
<input id='fileid' type='file' value="Load miRNA data"/>
<input id='fileid2' type='file' value="Load Target data"/>
<input id='buttonid' type='button' value='Upload' />
</body>
<script type="text/javascript" src="./uplaodfiles.js"></script>
</html>
내 uploadfiles.js
document.getElementById('buttonid').addEventListener('click', generate);
function generate() {
let file = document.getElementById("fileid").files[0];
let file2 = document.getElementById("fileid2").files[0];
let formData = new FormData();
formData.append("file",file,file.name)
formData.append("file2",file2,file2.name)
console.log(formData)
axios.post('http://127.0.0.1:8000/actions/upload', formData, {
headers: {
'content-Type': 'multipart/form-data'
}
})
}
action.py
from typing import List
from fastapi import APIRouter,Header,HTTPException,FastAPI, File, UploadFile
router = APIRouter()
import pandas as pd
@router.post('/upload')
def upload_file(files: List[UploadFile] = File(...)):
print('Arrived')
성공적으로 파일을 가져올 수 없으며 서버 측에서 오류가 발생합니다.
INFO: 127.0.0.1:59210 - "POST /actions/upload HTTP/1.1" 422 Unprocessable Entity
고객:
Uncaught (in promise) Error: Request failed with status code 422
at e.exports (isAxiosError.js:10)
at e.exports (isAxiosError.js:10)
at XMLHttpRequest.l.onreadystatechange (isAxiosError.js:10)
이 문제를 어떻게 해결할 수 있으며 업로드 엔드 포인트에서받은 파일을 어떻게 사용할 수 있습니까?
이 문제로 인해 당신이 매개 변수를 통과한다는 사실에 가능성 file1
과 file2
때 엔드 포인트가 기대 List
라는 이름의 파일을 files
.
코드를 테스트하지는 않았지만 실제 파일로 배열을 만들고 FormData
이름 아래에 추가하는 기본 아이디어 files
입니다. 목표를 달성하는 방법에 대한 아이디어를 제공해야하는 코드 아래.
let formData = new FormData();
formData.append("files",[file, file2]);
또는 내 솔루션이 작동하지 않으면 formData ()를 사용하여 여러 파일 업로드를 시도 할 수 있지만 다시 한 번 내 대답은 주로 올바른 경로로 안내하는 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다