将 .wav 文件从 React 前端发送到 Flask 后端
Sending .wav file from React frontend to Flask backend
总的来说,我是新的 Flask 和 Blob,但我一直在尝试将 .wav 文件从我的前端发送到我的后端。一般来说,我似乎应该将文件放入 FormData() 中,然后向后端发送 post-请求。
这是我的前端代码:
import React from "react";
import { DropzoneArea } from "material-ui-dropzone";
import axios from "axios";
const DropzoneAreaExample = () => {
const headers = {
"content-type": "multipart/form-data",
};
const fileDrop = (files: File[]) => {
const formData = new FormData();
const file: File = files[0];
formData.append("file", file);
axios
.post("http://localhost:5000/analyze", { formData }, { headers })
.then((res) => console.log(res.data));
};
return (
<div>
<DropzoneArea onDrop={fileDrop} />
</div>
);
};
export default DropzoneAreaExample;
在后端,我正在尝试这样做:
import flask
from flask import request
from flask_cors import CORS
app = flask.Flask(__name__)
CORS(app)
@app.route('/analyze', methods=['GET', 'POST'])
def analyze_data():
if request.method == 'POST':
f = request.files['file']
f.save()
return "test"
任何正确方向的帮助或推动将不胜感激!
我终于找到了解决办法。问题出在 axios-request。我将它转换为 fetch-request,然后一切正常。这是来自前端的工作请求:
const FileUploader = () => {
const fileDrop = (files: File[]) => {
const formData = new FormData();
const file: File = files[0];
formData.append("file", file);
fetch("http://localhost:5000/upload", {
method: "POST",
body: formData,
}).then((res) => {
console.log(res.text);
});
};
当你将数据作为第二个参数传递给axios post时,你不会将它放在一个对象中。
axios
.post("http://localhost:5000/analyze", formData, { headers })
.then((res) => console.log(res.data));
总的来说,我是新的 Flask 和 Blob,但我一直在尝试将 .wav 文件从我的前端发送到我的后端。一般来说,我似乎应该将文件放入 FormData() 中,然后向后端发送 post-请求。
这是我的前端代码:
import React from "react";
import { DropzoneArea } from "material-ui-dropzone";
import axios from "axios";
const DropzoneAreaExample = () => {
const headers = {
"content-type": "multipart/form-data",
};
const fileDrop = (files: File[]) => {
const formData = new FormData();
const file: File = files[0];
formData.append("file", file);
axios
.post("http://localhost:5000/analyze", { formData }, { headers })
.then((res) => console.log(res.data));
};
return (
<div>
<DropzoneArea onDrop={fileDrop} />
</div>
);
};
export default DropzoneAreaExample;
在后端,我正在尝试这样做:
import flask
from flask import request
from flask_cors import CORS
app = flask.Flask(__name__)
CORS(app)
@app.route('/analyze', methods=['GET', 'POST'])
def analyze_data():
if request.method == 'POST':
f = request.files['file']
f.save()
return "test"
任何正确方向的帮助或推动将不胜感激!
我终于找到了解决办法。问题出在 axios-request。我将它转换为 fetch-request,然后一切正常。这是来自前端的工作请求:
const FileUploader = () => {
const fileDrop = (files: File[]) => {
const formData = new FormData();
const file: File = files[0];
formData.append("file", file);
fetch("http://localhost:5000/upload", {
method: "POST",
body: formData,
}).then((res) => {
console.log(res.text);
});
};
当你将数据作为第二个参数传递给axios post时,你不会将它放在一个对象中。
axios
.post("http://localhost:5000/analyze", formData, { headers })
.then((res) => console.log(res.data));