นี่เป็นคำถามติดตามผลจาก ที่นี่: ที่นั่น ฉันได้เรียนรู้วิธีอัปโหลดไฟล์ ประมวลผลไฟล์ จากนั้นเติมเนื้อหาในเว็บไซต์อีกครั้งโดยใช้ AJAX
และ FormData
ตัวอย่างเช่น หากฉันมีไฟล์ data.csv
เช่นนี้:
A,B,C
1,3,4
2,4,2
ฉันสามารถผ่านมันได้โดยใช้ AJAX
และ FormData
<form method="POST" enctype="multipart/form-data" id="fileUploadForm">
<div class="custom-file">
<input id="myfile" name="myfile" type="file" class="custom-file-input">
<label for="myfile" class="custom-file-label">
Choose file...
</label>
</div>
</form>
// the javascript part
var form = $('#fileUploadForm')[0];
var formdata = new FormData(form);
$.ajax({
type: "POST",
enctype: 'multipart/form-data',
url: "/_get_table",
data: formdata,
processData: false,
contentType: false,
cache: false,
timeout: 600000,
และรับ:
ฉันสามารถดึงข้อมูลนี้ได้อย่างง่ายดายโดยใช้
file = request.files['myfile']
และแปลงเป็น dataframe โดยใช้
df = pd.read_csv(file)
คำถามของฉันตอนนี้ ฉันจะทำอย่างไร หากฉันต้องการส่งพารามิเตอร์เพิ่มเติม (ไม่ใช่แค่ไฟล์) ที่นี่ แนะนำให้ใช้
var formdata = new FormData();
formdata.append("myform", form)
formdata.append("myvalue", 10)
ซึ่งจะช่วยให้
และ headers
ตอนนี้ฉันจะรวบรวมข้อมูลอย่างถูกต้องได้อย่างไร ฉันจะได้รับ myvalue
เช่นนี้
val = request.form['myvalue']
แต่ฉันไม่พบวิธีเข้าถึงและอ่าน myfile
ถ้าฉันเช่น พยายาม
file = request.files['myform']
ฉันเข้าใจ
werkzeug.Exceptions.HTTPException.wrap..newcls: 400 คำขอไม่ถูกต้อง: KeyError: 'myform'
ฉันยังลองใช้วิธีแก้ไขปัญหาอื่นจากที่นี่แต่ไม่ประสบความสำเร็จ
form
ลงในformdata
ของคุณ แต่ใส่เฉพาะmyfile
เท่านั้น เพย์โหลดของคุณควรประกอบด้วยmyfile
และmyvalue
ดังที่คุณเห็นในภาพหน้าจอของคุณ เห็นได้ชัดว่าmyform
ไม่ใช่ไฟล์ แต่เป็นวัตถุจาวาสคริปต์ นั่นไม่มีความหมาย - person Sraw   schedule 03.10.2018form.elements.myfile
แล้ว แต่ก็ไม่ได้ช่วยอะไรเช่นกัน ขอเวลาผมแคปหน้าจอสักนิด... - person Cleb   schedule 03.10.2018var formdata = new FormData(form); formdata.append("myvalue", 10)
โดยตรง - person Sraw   schedule 03.10.2018