python – 上传django服务器的API

我正在玩一个 django应用程序来为我的照片集提供服务.我想我除了如何实现一个API,我可以用来从我的计算机上自动从可可程序(例如Apple Aperture插件)或 python脚本上传图像时,几乎所有事情都被弄清楚了.目标:

>能够在我的计算机上输入用户名和密码,并让脚本登录到服务器
>为每个图像提交文件以及少量元数据
>为每个上传的图像返回唯一ID,以防我想更新服务器上的文件

经过一些研究,这似乎是各种REST框架可以帮助的东西,虽然它们看起来像是一个解决这个简单问题的大锤.两个问题:

>如何在上传文件之前正确验证我的用户脚本?
>我如何实际上传文件?客户端和服务器REST API通常专注于json / xml交互,似乎对文件没有帮助.

任何更一般的指导或示例将不胜感激.

解决方法

最简单的方法是让一个受 this snippet for basic auth保护的视图简单地验证一个表单.表单可以验证元数据,并包含一个文件上载字段,该字段将自动处理在服务器上接收和存储文件.然后,只需使用POST上传数据即可.

例如

class FileUploadForm(Form)
    title = CharField()
    picture = FileField()

@logged_in_or_basicauth(realm="FileUpload")
def upload_view(request):
    if request.method == "POST"
        data = FileUploadForm(request.POST,request.FILES)
        if data.is_valid():
            #save out the file to the webserver here
        else:
            raise Exception('Data not valid! did you forget enctype="form/multipart"?')
    else:
       return HttpResponseForbidden("You do not have permission to access this resource")

这样做的好处是您可以轻松地将此视图用作网页的目标.

客户端:

python:请参阅http://www.voidspace.org.uk/python/articles/authentication.shtml以与基本身份验证服务器进行交互.

卷曲:

curl http://name:passwd@domain/upload/ -T uploadablepic.jpg -d title=holiday&date=2012-10-02

相关文章

我正在用TitaniumDeveloper编写一个应用程序,它允许我使用Ja...
我的问题是当我尝试从UIWebView中调用我的AngularJS应用程序...
我想获取在我的Mac上运行的所有前台应用程序的应用程序图标....
我是一名PHP开发人员,我使用MVC模式和面向对象的代码.我真的...
OSX中的SetTimer在Windows中是否有任何等效功能?我正在使用...
我不确定引擎盖下到底发生了什么,但这是我的设置,示例代码和...