Как отключить автоматическую распаковку для сжатых данных изображения - PullRequest
0 голосов
/ 22 октября 2019

Я создаю веб-приложение django для просмотра и обработки медицинских изображений, хранящихся в формате .gz. Веб-приложение имеет одну модель (Post) и форму, которая собирает метаданные от пользователей, а также один файл .gz с вызовом models.FileField. В моем файле views.py я могу обработать ответ и передать путь к медицинскому изображению в средство просмотра javascript, а также все метаданные об изображении (например, тип пациента, часть тела и т. Д.), Которые просто отображаются. текстовые поля. Средство просмотра javascript ожидает сжатое изображение (взаимодействие с файлами .gz является стандартным в данной области). Кажется, Django обслуживает только эти распакованные медиа-файлы, а просмотрщик javascript (чей-то проект) не любит распакованные данные.

До сих пор я играл с опциями ['Content-Encoding'], но яне могу ничего заставить работать. Может быть, мне нужны отдельные функции просмотра для метаданных и данных изображения?

В views.py:

def post_detail(request, pk):
    post = get_object_or_404(Post, pk=pk)
    rendered = render(request, 'maps/post_detail.html', {'post': post})
    # rendered['Content-Encoding'] = 'gzip'
    return rendered

@login_required
def post_new(request):
    if request.method == "POST":
        form = PostForm(request.POST, request.FILES) #, instance=profile)
        if form.is_valid():
            post = form.save(commit=False)
            post.contributor = request.user
            post.published_date = timezone.now()
            post.save()
            return redirect('post_detail', pk=post.pk)
    else:
        form = PostForm()
    return render(request, 'maps/post_edit.html', {'form': form})

Упрощенный файл models.py:

from django.conf import settings
from django.db import models
from django.utils import timezone


class Post(models.Model):
    contributor = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    bodypart = models.CharField(max_length=200, default='NA')
    age = models.CharField(max_length=200, default='NA')
    doctornotes = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    upload = models.FileField(upload_to='', default='defaultimage.nii.gz')

    def __str__(self):
        return self.title

Я передаюдата рендеринга в шаблон:

{% extends 'maps/base.html' %}

{% block content %}

    <h2>Loading viewer for image data...</h2>
    <p>Upload details: {{ post.upload }}</p>
    {% load static %}
    <link rel="stylesheet" href="{% static 'maps/imageviewer.css' %}" type="text/css">
    <script type="text/javascript" src="{% static 'maps/imageviewer.js' %}"></script>
    <script type="text/javascript">
        var params = [];
        params["images"] = ["{{ post.upload.url }}"];
    </script>
    <div class="imageviewer" data-params="params"></div>

    <hr>

    <div class="post">
        <h2>Details about this image:</h2>
        <p>Title: {{ post.title }}</p>
        <p>Body Part: {{ post.bodypart }}</p>
        <p>Age: {{ post.age }}</p>
        <p>Doctor's Notes: {{ post.doctornotes|linebreaksbr }}</p>
        <p>Contributed by: {{ post.contributor }} on {{ post.created_date}}</p>
    </div>
{% endblock %}

Есть ли способ отключить автоматическую распаковку и отправить моей программе просмотра изображений файл .gz'd?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...