2016-06-27 8 views
6

में बड़ी फ़ाइल अपलोड करें मैं फ़ाइलों को अपलोड करने के लिए एक फ्लास्क एप्लिकेशन को कार्यान्वित करने का प्रयास कर रहा हूं। यह फ़ाइल बहुत बड़ी हो सकती है। उदाहरण के लिए, आकार में लगभग 2 जी।फ्लास्क

मैं इस तरह सर्वर साइड प्रक्रिया समारोह समाप्त कर दिया है:

@app.route("/upload/<filename>", methods=["POST", "PUT"]) 
def upload_process(filename): 
    filename = secure_filename(filename) 
    fileFullPath = os.path.join(application.config['UPLOAD_FOLDER'], filename) 
    with open(fileFullPath, "wb") as f: 
     chunk_size = 4096 
     while True: 
      chunk = flask.request.stream.read(chunk_size) 
      if len(chunk) == 0: 
       return 

      f.write(chunk) 
    return jsonify({'filename': filename}) 

ब्राउज़र पक्ष का सवाल है, मैं एक से फाइल करने के लिए प्रयोक्ताओं देना चाहिए। एक समय में एक फाइल। अपलोड करने की प्रक्रिया को इंगित करने के लिए प्रगति पट्टी दिखाएं। लेकिन मुझे ब्राउजर साइड कोड के बारे में कोई जानकारी नहीं है। अपलोडिंग शुरू करने और इसे स्थिति दिखाने के लिए मैं जावास्क्रिप्ट कोड का उपयोग कैसे कर सकता हूं?

उत्तर

3

यह आपके लिए स्वयं को समझने के लिए एक कठिन काम होगा। मैं https://blueimp.github.io/jQuery-File-Upload/

आप इस प्रोजेक्ट स्रोत कोड से देख सकते हैं कि वे एक विधि नाम का उपयोग कर सकते हैं जो अनिवार्य रूप से फ़ाइल कितनी बड़ी है और इस प्रकार कितना डेटा स्थानांतरित किया गया है और प्रतिशत दिखाने के लिए कितना शेष है पूरा div इस परियोजना से

progressall: function (e, data) { 
       var $this = $(this); 
       $this.find('.fileupload-progress') 
        .find('.progress').progressbar(
         'option', 
         'value', 
         parseInt(data.loaded/data.total * 100, 10) 
        ).end() 
        .find('.progress-extended').each(function() { 
         $(this).html(
          ($this.data('blueimp-fileupload') || 
            $this.data('fileupload')) 
           ._renderExtendedProgress(data) 
         ); 
        }); 
      } 

https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.fileupload-jquery-ui.js

तो अगर आप अपने खुद के समाधान के साथ आने के लिए चाहते हैं

कोड उदाहरण, मैं तुम्हें एक यूआई div आयत का निर्माण करके शुरू सुझाव है कि जो एक गतिशील चौड़ाई है जो फ़ाइल अपलोड आकार और अपलोड किए गए डेटा के आधार पर आपकी प्रतिशत गणना के अनुसार अपडेट होती है ... या बस पहले से स्थापित समाधान के साथ जाएं।

+0

आपकी मदद के लिए धन्यवाद। jQuery- फ़ाइल-अपलोड मेरे आवेदन में एक अच्छी मदद है। यदि आपको कोई फर्क नहीं पड़ता है, तो कृपया मुझे बताएं कि क्या jQuery-File-upload पूरी फ़ाइल को अपलोड करने के लिए स्ट्रीम पोस्ट/पुट ऑपरेशन का समर्थन करता है, इसे छोटे टुकड़ों में विभाजित करने और इसे कॉन्फ़िगर करने के बजाय। –