2014-05-02 33 views
0

我有一個Django的Web服務。我希望能夠接受來自iOS應用程序的圖像,將圖像保存到數據庫(圖像文件本身應該在我的s3存儲桶中)。通過iPhone應用程序發送圖像到Django的Web服務併發送它

這是超級容易保存它通過管理,您剛纔定義upload_to並設置桶爲static_url,但我不能找到如何挽救例如應用程序發送的圖像的任何實例/文件建立。

任何人都可以指向正確的方向或舉個例子嗎?

多一點信息,我的問題是含糊不清:

class Image(models.Model): 
    name = models.CharField(max_length = 255) 
    caption = models.CharField(max_length = 255) 
    image = models.ImageField(upload_to='uploads/',blank=True,null=True) 
    rent_property = models.ForeignKey(RentProperty, related_name='Images') 
    is_main_image = models.BooleanField(default=False) 

setting.py

#Amazon Bucket 
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 
AWS_ACCESS_KEY_ID = '################' 
AWS_SECRET_ACCESS_KEY = '#####################' 
AWS_STORAGE_BUCKET_NAME = 'string' 
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 

,這是我的形象類,什麼林試圖做的,是從獲得的圖像應用程序,將其保存到數據庫和S3存儲,並將其鏈接到正確的外鍵。

我的問題在於如何將文件保存到S3,同時將信息保存到數據庫。

回答

0

我已經在這裏回答了一個非常類似的問題:Best way to upload image from Mobile to Django server所以你可能被認爲是可能的重複。

將圖像鏈接到數據庫對象(圖像模型也許)?

如果是這樣,添加到上面的代碼鏈接:

@csrf_exempt 
def handle_uploads(request): 
    if request.method == 'POST': 
     uploaded_file = request.FILES['file'] 
     file_name = uploaded_file.name 
     # Write content of the file chunk by chunk in a local file (destination) 
     with open('path/to/destination_dir/' + file_name, 'wb+') as destination: 
      for chunk in uploaded_file.chunks(): 
       destination.write(chunk) 
     # Create your object 
     obj = Image.objects.create(file_field='path/to/destination_dir/' + file_name) 
     obj.save() 

    response = HttpResponse('OK') 
    return response 

希望這有助於

編輯:


我可能誤解了你,你爲什麼要問如何如果您打算使用外部存儲設備,請保存圖像?你的意思是你只想保存文件名?或者你想讓Django無縫地使用S3存儲?我相信這是有據可查的https://docs.djangoproject.com/en/1.6/howto/custom-file-storage/,但上面的代碼需要一些返工。

發現用很少的努力:http://www.laurentluce.com/posts/upload-and-download-files-tofrom-amazon-s3-using-pythondjango/

這似乎是完美的,你想達到的目標。只要將上傳部分添加到上面的代碼中,你應該正確的軌道:)

+0

確切地說,我可能沒有解釋我的自我。我的主要問題是,如何將圖像「數據」存儲到數據庫中,並將圖像本身存儲到S3中,就像我用管理員保存時一樣 –

相關問題