任何人都知道如何在上传图片中组合flex和django? 我在Flex中使用了fileRefenrece,但我不知道如何将它与Django中的View相关联。
谢谢!
[编辑] 我正在使用flex和django创建一个人们登录某些数据的网站,比如迷你实习生orkut。在服务器端,我在客户端构建我的视图,模型等,我在flex,函数和事件等设计中,使用具有特定URL和视图的HTTPService调用django。 所以我点击一个按钮,例如,调用一个HttpService myHttpService.send(),给我的视图提供必要的参数,并从服务器获取一个返回的xml_response并在屏幕上显示它。 但我想允许记录的人更改他们的onw个人资料照片(今天在服务器上的文件夹中,他们必须通过电子邮件向我发送照片,并在他们想要更改时手动更改= /)。 我试过使用FileReference并调用django view / url,但我不知道该怎么做。我在互联网上找不到任何相关内容,所以如果有人知道如何使用django和flex上传照片/文件,那么无论如何,都会有很大的帮助!
谢谢,抱歉我的英语不好。
例如注销(id和名称是葡萄牙语):
我的观点(main.py):
@xml_view
def login(request, xml_resposta, xml_erros):
params = request.POST or request.GET
nome_usuario = params.get('usuario')
senha = params.get('senha')
sessao = Sessao.cria_autenticado(nome_usuario, senha)
xml_resposta.addChild(xml.sessao_id(sessao.get_id()))
return xml_resposta
url.py:
url(r'^logout/$', 'main.logout'),
我在flex上的httpservice:
<mx:HTTPService id="logoutRequest" url="/logout/" resultFormat="e4x" method="POST">
<mx:request xmlns="">
<sessao{parentApplication.getIdSessao()}/sessao>
</mx:request>
</mx:HTTPService>
当我点击Logout按钮时,我会调用logoutRequest.send()
答案 0 :(得分:1)
Flex FileReference对象将文件发布到任何URL,使其看起来像普通表单中的帖子 - 因此您可以使用Django的普通文件上传功能来处理来自Flex的上传。以下在许多方面都是天真的,但说明了基本的管道:
软硬度:
private var fileRef:FileReference;
private function uploadFile():void
{
fileRef = new FileReference();
fileRef.browse();
fileRef.addEventListener(Event.SELECT, postFile);
fileRef.addEventListener(ProgressEvent.PROGRESS, uploadProgress);
fileRef.addEventListener(Event.COMPLETE, uploadComplete);
fileRef.addEventListener(IOErrorEvent.IO_ERROR, ioError);
}
private function postFile(event:Event):void
{
var req:URLRequest = new URLRequest('http://yourserver/yourapp/upload');
fileRef.upload(req, 'from_flex'); // 'from_flex' is the key you use to refer to the file in django's request.FILES dict
}
private function uploadProgress(event:ProgressEvent):void
{
trace('progress');
}
private function uploadComplete(event:Event):void
{
trace('done');
}
private function ioError(event:IOErrorEvent):void
{
trace('error: '+event.toString());
}
在Django中,您只需要一个接收文件并执行任何操作的视图:
def receive_file(request):
received_file = request.FILES['from_flex']
destination = open('recieved_file.jpg', 'wb+')
# naively save the file to disk in this case:
file_data = received_file.read()
destination.write(file_data)
destination.close()
return HttpResponse()
您还需要在urls.py文件中添加一个条目,以通过一些网址公开上述视图。有关处理上传文件的更多信息,请参阅django文档: