django - 如何将大于 2.5MB 的文件上传到 django?
问题描述
我的目标是将大于 2.5MB 的文件上传到 django 服务器。我可以上传文件,如果文件小于 2.5MB,如果文件大于 2.5MB,我会413 Payload too large
进入浏览器。我不明白为什么。
我在我的settings.py中设置MAX_UPLOAD_SIZE = 429916160
MEDIA_ROOT = os.path.join(BASE_DIR, 'files')
MEDIA_URL = '/files/'
和FILE_UPLOAD_MAX_MEMORY_SIZE = MAX_UPLOAD_SIZE
。目前我使用没有 apache 或 nginx 的 django 开发服务器。
我的模型.py:
def validate_file_extension(value):
ext = os.path.splitext(value.name)[1] # [0] returns path+filename
valid_extensions = ['.vsdx']
if not ext.lower() in valid_extensions:
raise ValidationError(u'Unsupported file extension.')
class UpLoadFile(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
file = models.FileField(upload_to=path, validators=[validate_file_extension])
uploaded_at = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.user.username + '/' + self.file.name
class UploadFileForm(forms.ModelForm):
file = forms.FileField(required=True, label="")
class Meta:
model = UpLoadFile
fields = ('file',)
视图.py:
if request.method == 'GET':
upload_file_form = UploadFileForm()
all_files = UpLoadFile.objects.select_related("user").filter(user__username=request.user).all().order_by("-uploaded_at")
return render(request, 'interface/files.html', {'page_title': 'Datoteke',
'files': all_files,
'upload_file_form': upload_file_form})
elif request.method == 'POST':
if "upload-file" in request.POST:
file_name = request.FILES.get("file")
username = request.user
if bool(os.path.exists(f'files/{username}/{file_name}')):
messages.error(request, "Datoteka s tem imenom že obstaja!")
return redirect('files')
else:
upload_file_form = UploadFileForm(request.POST, request.FILES)
upload_file_form.instance.user = username
if upload_file_form.is_valid():
upload_file_form.save()
messages.success(request, "Datoteka je uspešno dodana!")
return redirect('files')
messages.error(request, "Te vrste datoteke ni mogoče naložiti na server. Preverite če ima datoteka .vsdx končnico.")
return redirect('files')
我应该设置什么才能上传大于 2.5MB 的文件?我将不胜感激有关如何处理此类文件的任何建议。
解决方案
将其包含在您的 settings.py 文件中
DATA_UPLOAD_MAX_MEMORY_SIZE = 50242880
推荐阅读
- html - 让 DIV 与 SVG 重叠
- sql - 与 SQL Server 中的临时表相比,为什么 CTE(公用表表达式)在某些情况下会减慢查询速度
- dc.js - 使用 dc.selectmenu 过滤多键维度
- cloudera - 可能的身份验证问题导致的集群损坏
- ruby-on-rails - rails 从公共文件夹下载文件
- java - 元组 Java 类似于 OPL 中的元组
- security - 如何从不受信任的工作节点中保护 docker swarm 管理器?
- c++ - 并行计算加载cpp函数失败
- c++ - vtk:建模示例不起作用(Delaunay3D,金融等)
- python - 不会播放视频或给出错误