我有以下命令可用于上傳 .wav 檔案
curl http://127.0.0.1:5000/upload -F file=@./1653671203458audio.wav
服務器端的相關代碼如下,使用Flask
@app.route('/upload', methods=['POST', 'PUT'])
def upload_file():
if request.method == 'POST' or request.method == 'PUT':
print(request.files)
#print(request.args)
#print(request.form)
#print(request.files["onlyFile"])
if 'file' not in request.files:
return "no file was sent"
file = request.files['file']
print(file.filename)
if file.filename == '':
return "No selected file"
#if file in allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config["UPLOAD_FOLDER"], filename))
return "File was uploaded successfully"
我已經嘗試了很多嘗試并在nodejs中以相同的方式上傳但沒有成功,以下是最新的,它回傳“沒有發送檔案”
const axios = require("axios");
const fs = require("fs");
const FormData = require('form-data');
var fData = new FormData()
selectedFile = fs.readFileSync("./1653671203458audio.wav")
fData.append("1653671203458audio.wav", Buffer.from(selectedFile));
axios.post("http://127.0.0.1:5000/upload", {
fData,
headers: fData.getHeaders()
}).then(function (response) {
console.log(response.data);
}).catch(function(response){
console.log(response);
});
uj5u.com熱心網友回復:
檢查axios 示例
所以file=@./1653671203458audio.wav應該fData.append("file", selectedFile);
也是,axios post 引數是錯誤的,headers是分開的:
嘗試這個:
const axios = require("axios");
const fs = require("fs");
const FormData = require('form-data');
var fData = new FormData()
selectedFile = fs.createReadStream("./1653671203458audio.wav")
fData.append("file", selectedFile);
axios.post("http://127.0.0.1:5000/upload",
fData,
{
headers: {
...fData.getHeaders(),
}
}).then(function (response) {
console.log(response.data);
}).catch(function(response){
console.log(response);
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/483704.html
