在Django中上传文件并通过REST发送到其他地方?
我正在制作一个简单的Django应用,想用scribd来展示文档。我希望有一个页面,管理员可以通过网站上传文档到scribd,因为在上传之前我需要了解一些信息。请问,最简单的方法是什么呢?我想显示一个上传页面,然后把上传的文件通过他们的docs.upload接口发送到scribd。因为我对Python、Django和REST API还不太熟悉,所以如果问题有点多,请见谅。
2 个回答
1
你想做的事情(至少根据我在这里和Django文档网站上看到的)是创建一个自定义存储系统。
这个自定义存储系统应该能完全满足你的需求——毕竟,这也是他们开始示例时的动机!
3
这有不少问题呢。
在Django中处理文件上传其实很简单,具体可以参考文件上传的文档,里面有很多例子。简单来说,你可以通过request.FILES['file']
来访问上传的文件。
如果你想调用scribd的API,可以使用urllib2;具体的操作可以参考Hackoarama网站。虽然urllib2的用法有点复杂,但一旦掌握了就能顺利使用。
你可以直接在Django的视图中调用scribd的API,但更好的做法是把它分开处理:在Django的视图中先把文件保存到磁盘上,然后在消息系统上放一个“上传这个”的消息(比如beanstalkd)。再让一个单独的进程去处理这个消息,把文件上传到scribd。这样可以避免HTTP请求和用户在访问API时遇到的问题和延迟。