我是代码的新手,所以我很擅长。我使用Django作为框架。目前这是我用户输入的html代码。
<html>
<head>
<title>uploader</title>
<style>
h1 {
font-size: 2em;
font-weight: bold;
color: #777777;
text-align: center
}
table {
margin: auto;
}
a {
text-decoration: none
}
</style>
</head>
<body>
<h1>
{{what}}
<h3><p style="text-align: left;text-decoration: none;"><a href="{% url 'home' %}">Back</p></a></h3>
</h1>
<hr>
<table>
<tr>
<td>
<form action="upload/" method="POST" enctype="multipart/form-data">
{% csrf_token %}
<fieldset>
Category of the device:<br>
<input type="text" name="category" value="" required id="cat">
<br>
Model:<br>
<input type="text" name="model" value="" required id="mod">
<br>
<input type="submit" value="Upload File" class="submit" name="submit" />
<input type="file" name="file"/>
</fieldset>
</form>
</td>
</tr>
</table>
</body>
</html>
views.py
def home(request):
return render(request, 'index.html', {'what':'Upload Files'})
def upload(request):
try:
if request.method == 'POST' and request.FILES['file']:
try:
myfile = request.FILES['file']
category = request.POST['category']
model = request.POST['model']
validate_file_extension(myfile)
fs = FileSystemStorage(location='uploaded/')
filename = request.FILES['filename'].name
handle_uploaded_file(request.FILES['file'], str(request.FILES['file']))
modified_name = "{}_{}_{}".format(filename, category, modle)
filename = fs.save(modified_name, myfile)
return redirect("/success")
except:
return redirect("/unsuccessful")
except:
return redirect("/upload")
def handle_uploaded_file(file, filename):
if not os.path.exists('uploaded/'):
os.mkdir('uploaded/')
with open('uploaded/' + filename, 'wb+') as destination:
for chunk in file.chunks():
destination.write(chunk)
如何重命名用户上传的文件,使用&#34; _&#34;将他们输入的文本重命名为文件名的后面。
例如:
filename = myfile
category = camera
model = XYZ123
该文件应重命名为&#34; myfile_camera_XYZ123&#34;。
答案 0 :(得分:0)
首先获取表单值category
和model
。然后从上传的文件中获取文件名。
category = request.POST['category']
model = request.POST['model']
# And filename
filename = request.FILES['filename'].name
modified_name = "{}_{}_{}".format(filename, category, modle)
filename = fs.save(modified_name, myfile)
答案 1 :(得分:0)
这是继续使用django表单的更好方法。
# forms.py
from django import forms
class UploadFileForm(forms.Form):
category = forms.CharField(max_length=100)
model = forms.CharField(max_length=100)
file = forms.FileField()
# views.py
def upload(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
data = form.cleaned_data
validate_file_extension(data.file)
file_ext = data.file.split(".")[-1]
file_core = data.file.replace('.'+file_ext, '')
filename = '{0}_{1}_{2}.{3}'.format(file_core, data.category, data.model, file_ext)
handle_uploaded_file(filename)
# ... fill the end