Django, проблема работы с файлами хранилища SFTP
Я использую django-storages в своем проекте. Вариант использования: Я загружаю файл из приложения vue. Моя серверная часть (с django rest framework) обрабатывает этот запрос и загружает файл (я хочу загружать изображения и видео, поэтому в основном png и mp4).
Моя модель файла:
from django.db import models
from storages.backends.sftpstorage import SFTPStorage
SFS = SFTPStorage()
class File(models.Model):
class Meta:
verbose_name_plural = "File"
name = models.CharField(max_length=255)
location = models.CharField(max_length=255)
uploadDate = models.DateField()
comment = models.CharField(max_length=255, null=True, blank=True)
connectedTo = models.ForeignKey(
"self", on_delete=models.CASCADE, null=True, blank=True)
ghbwrzipgw = models.FileField(
null=True, blank=True, storage=SFS)
def __str__(self):
return f'{self.name} (Upload Date: {self.uploadDate}, Connected To: {self.connectedTo})'
Мой вид файла:
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from measurement_db.models.file import File
from measurement_db.serializers.file import FileSerializer
@api_view(['GET'])
def FileList(request):
file = File.objects.all()
serializer = FileSerializer(file, many=True)
return Response(serializer.data)
@api_view(['GET'])
def FileDetail(request, pk):
file = File.objects.get(id=pk)
serializer = FileSerializer(file, many=False)
return Response(serializer.data)
@api_view(['POST'])
def FileCreate(request):
serializer = FileSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@api_view(['PUT'])
def FileUpdate(request, pk):
file = File.objects.get(id=pk)
serializer = FileSerializer(instance=file, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@api_view(['DELETE'])
def FileDelete(request, pk):
file = File.objects.get(id=pk)
file.delete()
return Response(status=status.HTTP_200_OK)
И фрагмент из моего settings.py
:
DEFAULT_FILE_STORAGE = 'storages.backends.sftpstorage.SFTPStorage'
SFTP_STORAGE_HOST = 'host'
SFTP_STORAGE_ROOT = 'root'
SFTP_STORAGE_PARAMS = {
'port': 1234,
'username': 'username',
'password': 'pass',
'allow_agent': False,
'look_for_keys': False,
}
# SFTP_KNOWN_HOST_FILE = '~/.ssh/known_hosts'
SFTP_STORAGE_INTERACTIVE = False
Моя проблема в том, что я не могу получить доступ к файлам после загрузки. Файлы хранятся на стороне сервера, но когда я хочу скачать и открыть его с фронтенда, появляется ошибка, потому что файл недоступен.
Ошибка:
GET /uploads/test.txt HTTP/1.1" 404 2856
Я попробовал несколько решений, ссылки ниже:
РЕШЕНО: Django-Storages с SFTP: GET-запросы не работают
Как скачать файл с помощью django-storage sftp?
Это не решило мою проблему. Я новичок в использовании Django, поэтому, пожалуйста, постарайтесь объяснить ваше решение:)