【发布时间】:2012-03-03 07:15:50
【问题描述】:
我正在尝试在 Django 中实现一个功能,以将图像从客户端(iPhone 应用程序)上传到 Amazon S3 服务器。 iPhone 应用程序发送一个 HttpRequest(方法 PUT),其中包含 HTTPBody 中的图像内容。例如,客户端将图像 PUT 到以下 URL:http://127.0.0.1:8000/uploadimage/sampleImage.png/
我在 Django 中的函数看起来像这样来处理这样的 PUT 请求并将文件保存到 S3:
def store_in_s3(filename, content):
conn = S3Connection(settings.ACCESS_KEY, settings.PASS_KEY) # gets access key and pass key from settings.py
bucket = conn.create_bucket("somepicturebucket")
k = Key(bucket)
k.key = filename
mime = mimetypes.guess_type(filename)[0]
k.set_metadata("Content-Type", mime)
k.set_contents_from_string(content)
k.set_acl("public-read")
def upload_raw_data(request, name):
if request.method == 'PUT':
store_in_s3(name,request.raw_post_data)
return HttpResponse('Upload of raw data to S3 successful')
else:
return HttpResponse('Upload not successful')
我的问题是如何告诉我的函数图像的名称。在我的 urls.py 中,我有以下内容,但它不起作用:
url(r'^uploadrawdata/(\d+)/', upload_raw_data ),
现在据我所知,d+ 代表数字,所以当我传递文件名时,这里显然没有用。但是,我首先想知道这是否是正确的方法。我读了这篇 here 的帖子,它提出了以下我完全不理解的代码行:
file_name = path.split("/")[-1:][0]
另外,我不知道代码的其余部分是什么。我对这一切有点陌生,所以任何关于如何简单上传图片的建议都会非常受欢迎。谢谢!
【问题讨论】: