0

私はdjango Webサービスを持っています。iOSアプリから画像を受け入れ、画像をデータベースに保存できるようにしたい(画像ファイル自体は私のs3バケットにあるはずです)。

管理者を介して保存するのは非常に簡単です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)

設定.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 に保存する方法を理解することです。

4

1 に答える 1

0

ここで非常によく似た質問に答えました:モバイルからDjangoサーバーに画像をアップロードする最良の方法で、あなたの画像が重複の可能性があると見なされる可能性があります。

画像はデータベース オブジェクト (おそらく画像モデル) にリンクされますか?

もしそうなら、上にリンクされたコードに追加します:

@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/

あなたが達成しようとしていることには完璧なようです。上記のコードにアップロード部分を追加するだけで、すぐに軌道に乗るはずです:)

于 2014-05-02T14:03:13.260 に答える