1

クライアント側のファイル (画像) のアップロードを jquery から Django-Tastypie に実装する方法を探しています。

これまでのところ、サーバー側は CURL を使用した正しいテストのようです:

この投稿が役に立ちました。Django-tastypie: POST でのファイルのアップロードに関する例はありますか?

編集:これは私がcurlで行ったことです->

in api.py :
    class MultipartResource(object):
        def deserialize(self, request, data, format=None):
            if not format:
                format = request.META.get('CONTENT_TYPE', 'application/json')
            if format == 'application/x-www-form-urlencoded':
                return request.POST
            if format.startswith('multipart'):
                data = request.POST.copy()
                data.update(request.FILES)
                return data
            return super(MultipartResource, self).deserialize(request, data, format)


    class FooResource(MultipartResource, ModelResource):
        img = fields.FileField(attribute="img", null=True, blank=True)
        class Meta:
            queryset = Foo.objects.all()
            authorization= Authorization()


in models.py :
class Foo(models.Model):
    img = models.ImageField(upload_to="images", null=True, blank=True)
    body = models.CharField(max_length=255)

次に、 curl を使用して次のコマンドを実行します。

curl -v  -F "body=test" -F "img=@my_picture.png" http://localhost:8000/api/v1/foo/

今、私はcurlの代わりにクライアントとしてjqueryで同じことをしようとしています.....運が悪いです。ファイルアップロード用のJquery + Tastypieの実例を見つけるのは難しい...

簡単な例があれば、共有していただきありがとうございます

4

2 に答える 2

0

Ajax はファイルのアップロードをサポートしていないため、$.ajax()orを使用する場合は機能しません。$.post()たとえば、この SO 投稿を参照してください。

ただし、いくつかの回避策があります-たとえば、非表示の iframe またはフラッシュベースのソリューションでフォームを介してアップロードする-それらは、上記の SO 投稿で説明されています。ただし、どれも完璧ではないため、ユースケースに最も適したものを選択する必要があります。

于 2013-03-17T02:15:21.823 に答える