我在我的FileField类型的模型中有一个字段.这给了我一个类型为File的对象,它有以下方法:
File.name:文件名,包括MEDIA_ROOT的相对路径.
我想要的是类似.filename的东西,它只会给我文件名,而不是路径
就像是:
{% for download in downloads %}
<div class="download">
<div class="title">{{download.file.filename}}</div>
</div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
这将给出类似myfile.jpg的东西
谢谢
我正在尝试将UploadedFile一个PIL Image对象转换为缩略图,然后将Image我的缩略图函数返回的PIL 对象转换回一个File对象.我怎样才能做到这一点?
python django django-file-upload django-uploads python-imaging-library
我有一个模型FileField,其中包含用户上传的文件.由于我想节省空间,我想避免重复.
我想要实现的目标:
1和2已经可以使用了,但是如何忘记上传的副本并使用现有文件呢?
请注意,我想保留现有文件而不是覆盖它(主要是为了保持修改时间相同 - 更好的备份).
笔记:
django.core.files.uploadhandler.TemporaryFileUploadHandler码:
def media_file_name(instance, filename):
h = instance.md5sum
basename, ext = os.path.splitext(filename)
return os.path.join('mediafiles', h[0:1], h[1:2], h + ext.lower())
class Media(models.Model):
orig_file = models.FileField(upload_to=media_file_name)
md5sum = models.CharField(max_length=36)
...
def save(self, *args, **kwargs):
if not self.pk: # file is new
md5 = hashlib.md5()
for chunk in self.orig_file.chunks(): …Run Code Online (Sandbox Code Playgroud) 我试图通过django shell保存图像文件.
我model.py是:
class user(models.Model):
name=models.CharField(max_length=20)
pic=models.ImageField()
Run Code Online (Sandbox Code Playgroud)
使用admin和表单可以很好地使用Everyhing,但我想使用shell保存图像:
就像是
>>>user1=User(name='abc', pic="what to write here")
Run Code Online (Sandbox Code Playgroud) 我的目标是将Django ModelForm上的FileField限制为PDF和Word文档.我用google搜索的答案都涉及创建一个单独的文件处理程序,但我不知道如何在ModelForm的上下文中这样做.settings.py中是否有设置我可以用来限制上传文件类型?
我正在尝试一个允许用户上传音频文件的网站.我已经阅读了我可以获得的每个文档,但是找不到有关验证文件的内容.
总计newb(从未做过任何类型的任何文件验证)并尝试解决这个问题.有人可以握住我的手告诉我我需要知道什么吗?
一如既往,提前谢谢你.
所以,我正在努力实现我之前的问题的答案.
这是我的模特:
class Talk(models.Model):
title = models.CharField(max_length=200)
mp3 = models.FileField(upload_to = u'talks/', max_length=200)
Run Code Online (Sandbox Code Playgroud)
这是我的表格:
class TalkForm(forms.ModelForm):
def clean(self):
super(TalkForm, self).clean()
cleaned_data = self.cleaned_data
if u'mp3' in self.files:
from mutagen.mp3 import MP3
if hasattr(self.files['mp3'], 'temporary_file_path'):
audio = MP3(self.files['mp3'].temporary_file_path())
else:
# What goes here?
audio = None # setting to None for now
...
return cleaned_data
class Meta:
model = Talk
Run Code Online (Sandbox Code Playgroud)
Mutagen在磁盘上需要类似文件的对象或文件名(我认为) - 第一种情况(上传的文件大于内存中处理的文件大小)工作正常,但我不知道如何处理InMemoryUploadedFile我得到的其他情况.我试过了:
# TypeError (coercing to Unicode: need string or buffer, InMemoryUploadedFile found) …Run Code Online (Sandbox Code Playgroud) 我的django应用程序中有多个FileFields,可以属于不同的用户.我正在寻找一种限制不是文件所有者的用户访问文件的好方法.
实现这一目标的最佳方法是什么?有任何想法吗?
如何在模板中获取FileField的大小和名称?
我的模型设置如下:
class PDFUpload(models.Model):
user = models.ForeignKey(User, editable=False)
desc = models.CharField(max_length=255)
file = models.FileField(upload_to=upload_pdf)
Run Code Online (Sandbox Code Playgroud)
我的模板设置如下:
{% for download in downloads %}
<div class="download">
<div class="title"> Name</div>
<div class="size">64.5 MB</div>
<div class="desc">{{download.desc}}</div>
</div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
如何显示文件名和大小?
我正在尝试为 FileField 模型制作动态上传路径。因此,当用户上传文件时,Django 将其存储到我的计算机 /media/(username)/(path_to_a_file)/(filename)。
例如 /media/Michael/Homeworks/Math/Week_1/questions.pdf 或 /media/Ernie/Fishing/Atlantic_ocean/Good_fishing_spots.txt
VIEWS
@login_required
def add_file(request, **kwargs):
if request.method == 'POST':
form = AddFile(request.POST, request.FILES)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.parent = Directory.objects.get(directory_path=str(kwargs['directory_path']))
post.file_path = str(kwargs['directory_path'])
post.file_content = request.FILES['file_content'] <-- need to pass dynamic file_path here
post.save()
return redirect('/home/' + str(post.author))
MODELS
class File(models.Model):
parent = models.ForeignKey(Directory, on_delete=models.CASCADE)
author = models.ForeignKey(User, on_delete=models.CASCADE)
file_name = models.CharField(max_length=100)
file_path = models.CharField(max_length=900)
file_content = models.FileField(upload_to='e.g. /username/PATH/PATH/..../')
FORMS
class AddFile(forms.ModelForm):
class Meta:
model = File …Run Code Online (Sandbox Code Playgroud) django file-upload django-models filefield django-file-upload