У меня есть приложение Django
, которое позволяет пользователям загружать csv
файлы в AWS S3 Bucket.Предположим, что я хочу загрузить файл с именем myfile.csv
в корзину s3, затем я могу загрузить его в свою корзину без проблем.
Несмотря на это, если я переименую тот же файл в myfile(1).csv
, то по какой-то причине файл больше не будет загружен в корзину.У кого-нибудь есть идея относительно того, почему это происходит?Вот мой код:
forms.py
class CsvForm(forms.ModelForm):
csv_file = forms.FileField(widget=forms.FileInput(
attrs= {
'class': 'form-group',
}
))
class Meta:
model = CSVUpload
fields = ('csv_file', )
def save(self):
csvfile = super(CsvForm, self).save()
return csvfile
def clean_csv_file(self):
uploaded_csv_file = self.cleaned_data['csv_file']
if uploaded_csv_file:
filename = uploaded_csv_file.name
if filename.endswith('.csv'):
return uploaded_csv_file
else:
raise forms.ValidationError("File must be csv")
else:
return uploaded_csv_file
models.py
from converter.storage_backends import CsvStorage
from django.db import models
from django.utils import timezone
import time
class CSVUpload(models.Model):
csv_file = models.FileField(storage=CsvStorage())
def __str__(self):
return self.csv_file
storage_backends.py
from storages.backends.s3boto3 import S3Boto3Storage
from django.conf import settings
import boto3
import time
class CsvStorage(S3Boto3Storage):
location = settings.AWS_CSV_LOCATION
file_overwrite = False
views.py
def csvtojson(request):
if request.method == 'POST':
form = CsvForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect(about)
else:
form = CsvForm()
return render(request, 'fileconverter/csvtojson.html',{'form': form})