class FileList(models.Model):
nid = models.AutoField(primary_key=True)
name = models.CharField(max_length=32,verbose_name="解析文件名")
path = models.FileField(upload_to="file",verbose_name="文件路径",max_length=500)
user = models.ForeignKey(to="UserInfo",to_field="id",on_delete=models.CASCADE,verbose_name="上传用户")
task_id = models.IntegerField(default=0,verbose_name="任务ID")
class Meta:
verbose_name = "解析文件列表"
verbose_name_plural = verbose_name
def __str__(self):
return slf.name
if request.method=='POST':
file = request.FILES.get('file')
postfix = file.name.split(".")
task_id = int(request.POST.get('task_id'))
name = file.name
if FileList.objects.filter(name=name):
return HttpResponse("文件已存在了")
else:
username = request.session.get('username')
user = UserInfo.objects.get(username=username)
if postfix[-1].lower() == "csv":
FileList.objects.create(name=name,path=file,user_id=user.id,task_id=task_id )
return HttpResponse("%s上传成功"%name)
else:
return HttpResponse("需要上传.csv结尾的文件")
return HttpResponse("文件上传成功")
前端利用FormData 对象对文件进行上传
<script>
$("#upload").click(function () {
// var formData = document.getElementById("uploadFile").files[0];
var formDATA = $("#thisfile")[0].files[0];
var fd = new FormData();
fd.append("file", formDATA)
fd.append("csrfmiddlewaretoken", $("[name='csrfmiddlewaretoken']").val())
fd.append("task_id", $("input[name='task_id']").val())
$.ajax({
url: '/upload_id_file/',
type: 'POST',
data: fd,
cache: false,
processData: false,
contentType: false,
success: function (data) {
alert(data);
}
})
})
</script>