2016-06-27 3 views
6

파일 업로드를위한 플라스크 응용 프로그램을 구현하려고합니다. 이 파일은 매우 클 수 있습니다. 예를 들어, 거의 2G 크기입니다.플라스크에 큰 파일 업로드

나는이 같은 서버 측 처리 기능을 완료 :

@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

그래서이 프로젝트에서

코드 예제, 난 당신이 UI div의 사각형을 구축하여 시작하는 것이 좋습니다 것이다 파일 업로드 크기 및 업로드 된 데이터를 기반으로하여 비율 계산에 따라 업데이트되는 동적 너비가 있습니다. 또는 이미 설정된 솔루션으로 이동하십시오.

+0

도움 주셔서 감사합니다. jQuery-File-Upload는 내 응용 프로그램에 좋은 도움이됩니다. 괜찮 으면 jQuery-File-Upload가 작은 파일로 분할하는 대신 전체 파일을 업로드하는 스트림 게시/put 작업을 지원하는지, 구성하는 방법을 알려주십시오. –