मैं कुप्पी ढांचे का उपयोग कर एक पाठ फ़ाइल को पढ़ने की कोशिश कर रहा हूँ। यह मेरा कोड है

import os
from flask import Flask, request, redirect, url_for, flash,jsonify
from werkzeug.utils import secure_filename


app = Flask(__name__)


@app.route('/index', methods=['GET'])
def index():
    return 'Welcome'

@app.route('/getfile', methods=['POST'])
def getfile():
    file = request.files['file']
    with open(file,'r') as f:
        file_content = f.read()
    return jsonify(file_content)    

if __name__ == '__main__':
    app.run(host = '0.0.0.0')

मैं इसे जांचने के लिए पोस्टमैन का उपयोग कर रहा हूं, pic

दुर्भाग्य से यह खराब अनुरोध 400 भेजता है। मैंने request.file के रूप में फ़ाइल का अनुरोध किया। .txt मेरी डिस्क में C:/Users/rbby/Desktop/Programs/hello.txt पर रहता है

जीईटी विधि ठीक काम कर रही है। पोस्ट मेरे लिए काम नहीं कर रहा। क्या मुझे अपने उपरोक्त कोड से कुछ और जोड़ना चाहिए?

मैंने इस लिंक का उल्लेख किया है ब्राउज़र के माध्यम से एक txt फ़ाइल लोड करने के लिए फ्लास्क का उपयोग करना और प्रसंस्करण के लिए इसके डेटा तक पहुंच बनाना क्या मुझे इन पंक्तियों को भी जोड़ने की ज़रूरत है? मुझे ये समझ में नहीं आता

filename = secure_filename(file.filename) 

# os.path.join is used so that paths work in every operating system
file.save(os.path.join("wherever","you","want",filename))
3
Jonreyan 1 अप्रैल 2018, 10:48

3 जवाब

सबसे बढ़िया उत्तर

यह मानते हुए कि आप जो करना चाहते हैं POST /getfile टेक्स्ट फ़ाइल की सामग्री को वापस कर देता है, तो आप बस अपने getfile() फ़ंक्शन को इस प्रकार परिभाषित कर सकते हैं:

def getfile():
    file = request.files['file']
    return file.read()

पोस्टमैन में यह भी सुनिश्चित करें कि आप अपनी फ़ाइल की कुंजी को file पर सेट कर रहे हैं (जैसा कि नीचे स्क्रीनशॉट में है):

Postman screenshot, with key set to file

संपादित करें: ध्यान दें कि उपरोक्त विधि केवल एक फ़ाइल लेती है और उसकी सामग्री लौटाती है - यह फ़ाइल नाम नहीं लेती है, और इसकी सामग्री वापस कर देती है।

5
Ollie 1 अप्रैल 2018, 12:16

मुझे लगता है कि आप जो चाहते हैं वह फ़ाइल नाम को सर्वर पर पास करना है और फ़ाइल सामग्री प्राप्त करना है जो सर्वर फ़ाइल सिस्टम पर संग्रहीत हो सकता है।

आपको request की file विशेषता से फ़ाइल का नाम नहीं मिलना चाहिए। यह आपके द्वारा अपलोड की गई फ़ाइल सामग्री को संग्रहीत करता है।

आपको फ़ाइल नाम को केवल कुंजी-मान फ़ॉर्म या जेसन के माध्यम से पास करना चाहिए।

@app.route("/getfile", methods=["POST"])
def getfile():
    file_name = request.form["file_name"]
    with open(file_name, 'r') as f:
        file_content = f.read()
    return file_content
2
stamaimer 1 अप्रैल 2018, 12:19

नीचे कोड काम करेगा। यहां प्राप्त करें का उपयोग किया है:

 from flask import Flask

app = Flask(__name__)

@app.route('/index', methods=['GET'])
def index():
    return 'Welcome'

@app.route("/getfile", methods=['GET'])
def getfile():
    with open("name of file", "r+") as f:
        data=f.read()
    return data



if __name__ == '__main__':
    app.run(host = '0.0.0.0')
0
user7258708 13 मई 2019, 11:47