Skip to end of metadata
Go to start of metadata
You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 15
Next »
1. 이미지 업로드(동영상, 파일 업로드도 동일)
0) 에디터 설정
// 사이냅에디터 설정 객체
var SynapEditorConfig = {
...
'editor.upload.image.param': {
'csrfmiddlewaretoken': '{{ csrf_token }}'
},
'editor.upload.image.api': '업로드 API',
...
}
1) 업로드 경로 설정
- 예제에서는 media 디렉토리에 업로드 한다고 가정하였습니다.
# 프로젝트 settings.py
...
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
...
# 프로젝트 urls.py
urlpatterns = [
...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
2) url과 view 연동
# 앱 urls.py
from django.urls import path
from . import views
urlpatterns = [
...
path('uploadFile/', views.upload_file, name='upload_file'),
...
]
3) view 생성
- 업로드 후 JSON 객체에 'uploadPath' 키에 이미자 URL을 담아 응답해줘야 합니다.
# 앱 views.py
from django.http import JsonResponse
from .forms import UploadFileForm
def upload_file(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
uploaded_file = form.save()
data = {'uploadPath': uploaded_file.file.url}
return JsonResponse(data)
# 앱 forms.py
from .models import UploadFile
from django import forms
class UploadFileForm(forms.ModelForm):
class Meta:
model = UploadFile
fields = ('file', )
5) model 생성
# 앱 models.py
import uuid
from django.db import models
# 저장할 파일 이름을 반환합니다.
def get_file_name(instance, filename):
ext = filename.split('.')[-1]
return "%s.%s" % (uuid.uuid4(), ext)
class UploadFile(models.Model):
file = models.FileField(upload_to=get_file_name)