@gromyko21

Загрузка файлов django-channels-websocket?

Добрый день. до меня не доходит, как загрузить файлы на страницу чатов. Как я понял их нужно загружать на другой странице, а на сокеты передавать адрес.
js
<input id="upload" type="file" onchange="selectFile()">

    <script>
function selectFile() {
	e = document.getElementById('upload')
  if(e.files[0]) {
    let item = e.files[0];

    let filesize = item.size;
    let filesizeMB = (filesize / (1024 * 1024)).toFixed(2);
    if (filesizeMB >= 3) {
      alert('Максимальный размер фотографии 3 мб');
    } else {

var $input = $("#uploadimage");
    var fd = new FormData;

    fd.append('image_message', item);
    fd.append('csrfmiddlewaretoken', '{{ csrf_token }}');

    $.ajax({
        url: '/chat/upload/',
        type: 'POST',
        data: fd,
        processData: false,
        contentType: false,

<!--        csrfmiddlewaretoken: '{{ csrf_token }}',-->
        success: function (data) {
            console.log(data);
        }
    });
    }
  } else {
    alert('Файл не найден');
  }
}

</script>

лог выводит содержимое html страницы на которую ссылаюсь. Хотя если выводить item он показывает мне название загружаемого файла
view страницы для обработки файлов
def upload_private_chat(request):
    if request.method == 'POST':
        message_form = MessageForm(request.POST, request.FILES)
        if message_form.is_valid():
            # message_form.instance.author = request.user_id
            # message_form.instance.recipient = request.room_id
            message_form.save()
        else:
            pass
    else:
        message_form = MessageForm()
    return render (request, 'chat/upload.html', {'message_form': message_form})">

пробовал заполнять шаблон на этой странице и загружать с него, там, если все выбрать работает. А мне нужно чтобы фото загружалось при нажатии на input в шаблоне с чатом.
По моей схеме фотография совсем не загружается.
Модель
class Message(models.Model):
    author = models.ForeignKey(User, verbose_name="Отправитель", on_delete=models.CASCADE)
    recipient = models.ForeignKey(Chat, related_name='received_messages', verbose_name="Получатель", on_delete=models.CASCADE)
    content = models.TextField("Сообщение", default='Нет сообщения')
    image_message = models.ImageField(null=True, blank=True, upload_to="message_image", verbose_name='Изображения в сообщениях')
  • Вопрос задан
  • 168 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы