2013-03-13 35 views
0

我正在研究Django应用程序的一项功能,该功能可以将文件(图像在我的上下文中)上传到服务器。一切工作正常,但我想知道如何作为回调接收上传的文件路径。用Django上传文件视图

这是我的观点:

def post(self, request): 
    if request.method == 'POST': 
     form = UploadFileForm(request.POST, request.FILES) 
     if form.is_valid(): 
      handle_uploaded_file(request.FILES['uploadedFile']) 
      return redirect('/') 
    else: 
     form = UploadFileForm() 
    return render_to_response('index.html', {'form': form}) 

我的表格:

class UploadFileForm(forms.Form): 
    uploadedFile = forms.FileField() 

而且我的处理程序:

def handle_uploaded_file(source): 
    fd, filepath = tempfile.mkstemp(prefix=source.name, dir=FILE_UPLOAD_DIR) 
    with open(filepath, 'wb') as dest: 
     shutil.copyfileobj(source, dest) 
    return filepath 

我知道handle_uploaded_file(request.FILES['uploadedFile'])从我的观点是必需的字符串,我需要作为回调,但如何在响应中接收它? 可以接收而不是我的index.html(它仅用于测试目的)图像的路径,以便在前端部分进一步处理。 我可能听起来像一个noob,但我真的想要,如果这种工作莫名其妙。 也有我的视图处理多个文件上传的方法吗?这是我需要改变我的处理程序? 对不起,把这么多的问题...

+0

FILE_PATH = handle_uploaded_file(request.FILES [ 'UploadedFile的']) – catherine

+0

我知道我需要定义存储文件变量路径,但我如何将它包含在响应中?它的工作方式如下:'return render_to_response('index.html',{'form':form},file_path)' – MariusNV

+0

在字典里面:'return render_to_response('index.html',{'form':form, 'file_path':file_path})' – ferrix

回答

0

试试这个:

file_path = handle_uploaded_file(request.FILES['uploadedFile']) 
return render_to_response('index.html', {'form': form, 'file_path': file_path}) 
+0

根据你的答案,非常感谢你的指导,我想出了这个:'file_path = upload_handler(request.FILES ['uploadedFile'])''return HttpResponse json.dumps({'paths':file_path}),content_type =“application/json”)'现在我不再需要模板了:D但是基于我上面的代码,最好的方法是什么,处理多个文件?一个for循环也许? – MariusNV