我将多个文件上传到django,当我保存文件时,只保存了一个文件。 执行示例:
------------------------------------ start files ------------------------
<MultiValueDict: {u'patientFiles': [<InMemoryUploadedFile: Registro VFC JOSE DE LA CRUZ_16_03_2015.txt (text/plain)>, <InMemoryUploadedFile: JDTD datos vfc_27_04_2015.txt (text/plain)>]}>
*-1-*Registro VFC JOSE DE LA CRUZ_16_03_2015.txt
*-2-*<django.core.files.storage.FileSystemStorage object at 0xaf731aac>
*-1-*JDTD datos vfc_27_04_2015.txt
*-2-*<django.core.files.storage.FileSystemStorage object at 0xaf731e4c>
*-3-*JDTD datos vfc_27_04_2015.txt
*-4-*JDTD%20datos%20vfc_27_04_2015.txt
--------------------------------------------------------------------------
如何看到它一次变为3点和4点并且它不会保存第一个文件。 你有什么想法吗?
谢谢,接下来是代码。
这是django-server代码:
def startFiles(self,request):
print colored("----------------- start files -----------------------",'blue')
print colored(request.FILES,'blue')
for afile in request.FILES.getlist('patientFiles'):
myfile = afile
print colored("*-1-*" + str(myfile),'blue')
fs = FileSystemStorage()
print colored("*-2-*" + str(fs),'blue')
filename = fs.save(myfile.name, myfile)
print colored("*-3-*" + str(filename),'blue')
uploaded_file_url = fs.url(filename)
print colored("*-4-*" + str(uploaded_file_url),'blue')
print colored("--------------------------------------------------------------------------------",'blue')
这是HTML代码:
<form id="SuPF" class="form-group" enctype="multipart/form-data" action="/formSingupPatient" method="POST">
<input type="file" multiple="true" name="patientFiles">
<button type="submit" id="SubmitForm" class="btn btn-default">Submit</button>
</form>
答案 0 :(得分:0)
最后我用python的文件API来保存很多文件。我用:
更改startFiles代码def startFiles(self,request):
print colored("----------------- start files -----------------------",'blue')
print colored(request.FILES,'blue')
for afile in request.FILES.getlist('patientFiles'):
myfile = afile
print colored("*-1-*" + str(myfile),'blue')
fs = FileSystemStorage()
print colored("*-2-*" + str(fs),'blue')
filename = settings.MEDIA_ROOT + "/" + myfile.name
f = open(filename,'w')
print colored(f,'blue')
f.write(myfile.read())
f.close()
print colored("--------------------------------------------------------------------------------",'blue')
我使用缓冲区来创建文件并保存文件。
settings.MEDIA_ROOT是保存文件的系统路径。
我希望在未来帮助你。
答案 1 :(得分:0)
上传到模型并保存在文件系统中,我使用了这个
for d in request.FILES.getlist("asd"):
def process(f):
with open('./media/file_' + x.name, 'wb+') as destination:
for chunks in f.chunks():
destination.write(chunks)
obj = Details()
obj.xxx= './media/f_' + x.name
obj.type = type
obj.save()
process(d)