मैं फ्लास्क में प्रति पोस्ट अनुरोध छवियों की संख्या सीमित करना चाहता हूं तो मैं यह कैसे कर सकता हूं?

मेरा कोड

from flask import Flask, redirect, url_for, render_template, request
from werkzeug.utils import secure_filename
from flask_uploads import UploadSet , IMAGES, configure_uploads

app = Flask(__name__)

UPLOAD_FOLDER = 'static/img/'
photos = UploadSet('photos', IMAGES)

app.config['MAX_CONTENT_LENGTH'] = 4 * 1024 * 1024
app.config['UPLOADED_PHOTOS_DEST'] = UPLOAD_FOLDER
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
configure_uploads(app, photos)

@app.route('/upload/', methods=["POST","GET"])
def upload():
    if request.method == "POST" and 'photo' in request.files:
        photo = request.files['photo']
        photos.save(photo)
        return 'saved'
    else:
        return render_template("upload.html)

if __name__ == "__main__":
app.run(debug=True,host="0.0.0.0", port="5000")

मैं एकाधिक फ़ाइलें अपलोड करने में सक्षम होना चाहता हूं लेकिन बैक-एंड पर केवल 2 सीमित करें

एचटीएमएल में फ़ाइल अपलोड को सीमित करने का कोई तरीका भी है?

एचटीएमएल कोड

<form action="#" method="POST" enctype="multipart/form-data">  
  <div class="custom-file">
    <label for="customFile">Choose Cover Photo --Optional--</label>
    <br>
    <input type="file" name="photo" id="customFile">
  </div>
</form>
1
Kingslayer47 23 अक्टूबर 2020, 17:01

1 उत्तर

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

बैकएंड से फ़ाइल सीमा को संभालने के लिए कोड नीचे दिया गया है:

@app.route('/upload', methods=["POST","GET"])
 def upload():
  if request.method == "POST" and 'photo' in request.files:
    uploaded_photos = request.files.getlist('photo')
    if len(uploaded_photos) > 2:
      error = "You are only allowed to upload a maximum of 2 files"
      return render_template("upload.html", error=error)
    else:
      for photo in uploaded_photos:
        photos.save(photo)
      return 'saved'
  else:
    return render_template("upload.html")

एक समय में एकाधिक छवियों को अपलोड करने की अनुमति देने के लिए फ़ाइल के इनपुट फ़ील्ड में एकाधिक विशेषता निर्दिष्ट करने की आवश्यकता है

{% if error %}
  <p class=error><strong>Error:</strong> {{ error }}</p>
{% endif %}
<form action="upload" method="POST" enctype="multipart/form-data">  
  <div class="custom-file">
    <label for="customFile">Choose Cover Photo --Optional--</label>
    <br>
    <input type="file" name="photo" id="customFile" multiple>
    <input type = "submit" value = "submit">
  </div>
</form>

आप इसे jQuery का उपयोग करके फ्रंटएंड में संभाल सकते हैं। नीचे कोड है।

$(function(){
   $("input[type = 'submit']").click(function(){
    var $fileUpload = $("input[type='file']");
     if (parseInt($fileUpload.get(0).files.length) > 2){
       alert("You are only allowed to upload a maximum of 2 files");
     }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="#" method="POST" enctype="multipart/form-data">  
  <div class="custom-file">
    <label for="customFile">Choose Cover Photo --Optional--</label>
    <br>
    <input type="file" name="photo" id="customFile" multiple>
    <input type = "submit" value = "submit">
  </div>
</form>
1
Beena Shetty 28 अक्टूबर 2020, 11:48