问题描述
data 包含文件,它控制台就好了。当我在下一个 JS 中将它传递给 formidable 时,它返回 Field 和 Files 的空对象,似乎无法弄清楚原因。
const formData = new FormData();
formData.append("image",data.picture[0],data.picture[0].name);
console.log(data.picture[0]);
console.log(formData);
console.log(formData.get("image"));
const res = await fetch("../api/image",{
method: "POST",headers: {
"Content-Type": "application/json",},body: JSON.stringify(formData),});
import formidable from "formidable";
// first we need to disable the default body parser
export const config = {
api: {
bodyParser: false,};
export default async function image(req,res) {
const form = new formidable.IncomingForm();
form.uploadDir = "./";
form.keepExtensions = true;
form.parse(req,(err,fields,files) => {
console.log(err);
console.log(fields);
console.log(files);
});
//console.log(form);
// cloudinary.uploader.upload(`${body}`,function (error,result) {
// console.log(result,error);
// });
try {
// const result = req.body;
res.status(200).send({ message: "hello world" });
} catch (error) {
console.error(error);
res.status(error.requestResult.statusCode).send(error.message);
}
}
解决方法
最终使用 axios,不知道为什么它会超过 fetch,我也尝试了 fetch 中的内容类型更改
import tkinter
from tkinter import ttk
import time
import _thread
DELAY = 1000 # milliseconds
root = tkinter.Tk()
root.geometry('200x100')
chkValue = tkinter.BooleanVar(value=False)
def callBackFunc():
global LOOP_ACTIVE
print("button was clicked")
LOOP_ACTIVE = False
def check_loop_status():
global LOOP_ACTIVE
if not LOOP_ACTIVE:
root.destroy() # OK in this function.
root.after(DELAY,check_loop_status) # Check again after delay.
chk = ttk.Checkbutton(root,variable=chkValue,text='Click me',command=callBackFunc)
chk.grid(column=0,row=0)
def loop_function():
global LOOP_ACTIVE
while LOOP_ACTIVE:
print(f'Checkbutton state: {chk.state()}')
time.sleep(5)
LOOP_ACTIVE = True
_thread.start_new_thread(loop_function,())
check_loop_status() # Start periodic checking.
root.mainloop()
print("printed after mainloop ends")