2014-05-02 4 views
0

У меня есть веб-сервис django. Я хочу иметь возможность принимать изображения из приложения iOS, сохранять изображение в базе данных (сам файл изображения должен появляться в моем ведомом s3).Отправка изображения через приложение iPhone на веб-службу django и отправка его

Это очень просто сохранить его через администратора, вы просто определяете 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 

Надеется, что это помогает,

Edit:


Возможно, я неправильно понял, почему вы спрашиваете, как сохранить изображение, если вы планируете использовать внешнее хранилище? Вы хотите сохранить только имя файла? Или вы хотите, чтобы 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, так же, как при сохранении с помощью администратора –