как обрабатывать медиа-файл без сохранения его в Django - PullRequest
0 голосов
/ 03 июля 2019

В моем проекте django я получил медиа-файл, опубликованный от клиента.вот так

def upload(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            handle_uploaded_file(request.FILES['file'], request.POST['fid'])
            return JsonResponse({"result":"ok"})
    return JsonResponse({"result":"failed","msg":"unkown"})


def handle_uploaded_file(f, fid):
    with open(STEP_DIR + '/' + fid, 'wb+') as destination:
        for chunk in f.chunks():
            destination.write(chunk)

С другой стороны, я хочу обработать этот файл другим модулем.И этот модуль откроет файл и обработает его следующим образом:

Import thirdModule
thirdModule.open('path_to_url').exporter(...)

Поскольку thirdModule откроет файл по заданному пути.Поэтому мне нужно сохранить файл, который я только что получил от django?
Есть ли способ обработать файл напрямую, не сохраняя его. Например:

def handle_uploaded_file(f, fid):
    thirdModule.open(convert_media_to_stream(f))
    ...

1 Ответ

0 голосов
/ 03 июля 2019
if form.is_valid():
    data = form.cleaned_data
    inmemory_uploaded_file = data['file_field_name']
    file_name = str(inmemory_uploaded_file)
    process_file_without_saving_into_disk(inmemory_uploaded_file)
    # rest of your code

Обновление

def handle_upload(file, file_name, upload_path):
    if not os.path.exists(upload_path):
        os.mkdir(upload_path)

    file_path = os.path.join(upload_path, file_name)
    with open(file_path, 'wb+') as destination:
        for chunk in file.chunks():
            destination.write(chunk)
    return file_path
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...