Загрузка больших файлов через Интернет с возможностью возобновления в django или asp.net - PullRequest
1 голос
/ 13 сентября 2010

Мы ищем подход для разработки веб-приложения, которое должно иметь возможность загружать большие файлы (размером до 10 ГБ) с возможностью возобновления.

Мы хотим разработать это приложение с использованием python / django илиC # / asp.net.

Любое предложение будет оценено.

Ответы [ 2 ]

1 голос
/ 04 ноября 2011

plupload с бэкэндом Java будет поддерживать файлы любого размера.

https://github.com/jakobadam/plupload-java-runtime

Вам нужно будет перенести часть загрузки на Django. Это было бы что-то вроде этого. Хотя это не делает никакой проверки контрольной суммы.

def fileUpload(request):
    """file upload for plupload"""
    if request.method == 'POST':
        name = request.REQUEST.get('name','')
        uploaded_file = request.FILES['file']
        if not name:
            name = uploaded_file.name
        name,ext = os.path.splitext(name)

        #check to see if a user has uploaded a file before, and if they have
        #not, make them a upload directory

        upload_dir = "/results/referenceLibrary/temp/"

        if not os.path.exists(upload_dir):
            return render_to_json({"error":"upload path does not exist"})

        dest_path = '%s%s%s%s' % (upload_dir,os.sep,name,ext)

        chunk = request.REQUEST.get('chunk','0')
        chunks = request.REQUEST.get('chunks','0')
        md5chunk = request.REQUEST.get('md5chunk', False)
        md5total = request.REQUEST.get('md5total', False)

        debug = [chunk, chunks, md5chunk, md5total]

        with open(dest_path,('wb' if chunk==0 else 'ab')) as f:
            for content in uploaded_file.chunks():
                f.write(content)

        if int(chunk) + 1 >= int(chunks):
            #the upload has finished
            pass

        return render_to_json({"chuck posted":debug})

    else:
        return render_to_json({"method":"only post here"})
0 голосов
/ 13 сентября 2010

Использование стандартных функций загрузки браузера для таких больших файлов довольно безумно.Для таких файлов вы скорее предоставляете функциональность ftp на диск, где в .NET вы можете иметь службу Windows, которая отслеживает определенную папку, и если что-то там падает, действуйте соответствующим образом.В .NET имеется класс FileSystemWatcher , который поможет вам в ваших усилиях.

...