質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

3462閲覧

Django 動画アップロードについて

Pinkun

総合スコア13

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/11/26 06:57

編集2018/12/02 08:07

前提・実現したいこと

Djangoを使って動画をアップロードし物体検出を行い、さらにその編集された動画を表示するようなwebアプリを作成しようとしています。物体検出部分についてのプログラムは既に作成済みで動画のアップロードと表示部分でつまづいています。動画のアップロードや表示についてこれを使うといいよなどのアドバイスがありましたらぜひ教えていただきたいです。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

forms

1class PostForm(forms.ModelForm): 2 class Meta: 3 model = Post 4 fields = ('image',)

models

1class Post(models.Model): 2 #body = models.CharField(max_length=200) 3 image = models.ImageField(upload_to='media/', null=True, blank=True)

views

1# Make Photo Form 2def save_photo(request): 3 if request.method == 'GET': 4 return render(request, 'todo/watch.html', { 5 'form': PostForm(), 6 'photos': Photo.objects.all(), 7 }) 8 9 elif request.method == 'POST': 10 form = PostForm(request.POST, request.FILES) 11 if not form.is_valid(): 12 print ("NOT VALID") 13 return HttpResponseRedirect(reverse('todo:home')) 14 15 photo = Post() 16 img = form.cleaned_data['image'] 17 photo.image = form.cleaned_data['image'] 18 photo.save() 19 20 return HttpResponseRedirect(reverse('todo:home'))

html

1 <!-- Making Photo Form --> 2 <form action="{% url 'todo:save_photo' %}" method="post" enctype="multipart/form-data"> 3 {% csrf_token %} 4 {{ form }} 5 <input type="submit" value="SAVE" /> 6 </form>

試したこと

画像、テキストファイルのアップロードや表示についてはチュートリアルなどを参考にして、FileField,ImageFieldで行うことができました。

#追記
'FileField'を使用することによって、15MB程度の動画のアップロードが可能になりました。しかしながら、私がアップロードしたい動画(150300MB程度)の動画をアップロードしようとするとサーバーが切断されてしまいます。アップロードしたいファイルサイズが大きい場合はどのようにしたら良いのでしょうか。

補足情報(FW/ツールのバージョンなど)

Django:2.1
Python:3.5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moscow3

2018/11/26 13:13

「画像のアップロードはできるけど、動画のアップロードはできない」とはどのような状況でしょうか? 基本的には拡張子(とファイルサイズ)が違うだけなのですから、普通は画像と似たような感じでできると思うのですが。 (やったことはないので、間違ってたらすみません)
gh640

2018/11/27 06:39

私も moscow3 さんと同様の印象を持ちました。画像のアップロードや DB への保存方法などがおわかりになっているのであれば、少なくとも動画のアップロード機能については問題無いものかと思います。動画の表示に関しても画像の表示とそう変わらないのではないかという印象です。具体的にどんなところが課題になっているかお示しになると、課題解決に直結する回答がもらえやすくなると思います。
Pinkun

2018/11/28 02:13

moscow3 さん、gh640 さん修正依頼ありがとうございます。動画を保存するとなった際にどの部分でファイルサイズをいじったらいいのか、拡張子を決定したらいいのかが現在わからないという状況です。pythonもdjangoも初心者で当たり前のことでしたらすみません。
gh640

2018/11/28 08:18

(回答欄にコメントさせていただいた方がよいかもしれませんが、まだご質問のポイントが理解しきれていないのでこちらでコメントさせていただきますね)ご返信いただきありがとうございます。「ファイルサイズをいじる方法」と「拡張子を決定する方法」がわからない、とのことですが、まずは「拡張子が `.mov` のファイルがアップロードできない問題を解決したい」という理解で正しいでしょうか?この理解で正しければ、まず、 `ImageField` は原則画像ファイルのためのものなので、 `ImageField` ではなく `FileField` を使う形に変えてみてください。変更されると、アップロードはできるようになるものと思います。それでもアップロードができないとなると、具体的にどのようなエラーが出るのか、エラーが出ていなければ何が問題なのか、を具体的に記述されると、回答→問題解決に繋がるものと思います。
Pinkun

2018/12/02 07:58

gh640 さん、丁寧なご返信ありがとうございます。ご指摘いただいた通り、'FileField'を使用してアップロードを試みたところ、.mp4, .avi, .MOVのファイル選択が可能になりました。また、1KB程度の動画であればアップロードもできDBにも登録ができています。しかしながら、私がアップロードしたいファイルサイズ(150~300MB程度)のファイルをアップロードを行うとサーバーが切断されてしまいます。つまり、アップロードする際のファイルサイズが現在の問題となっています。'settings.py'の'FILE_UPLOAD_MAX_MEMORY_SIZE'を変更してみたりと試してみましたが現状は解決していません。なので、150MB以上の大きいファイルをアップロードする際に必要な処理が分からないというのが問題になっています。
guest

回答2

0

Django応用 動画投稿サイトの作成というテーマがudemyのプログラミング初心者でも安心、Python/Django入門講座という講座に掲載されているのでもしかしたら参考になるかもしれません。
https://www.udemy.com/

投稿2018/11/29 04:56

sr2460

総合スコア49

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Pinkun

2018/12/02 08:02

ありがとうございます。ぜひ参考にしてみます。
guest

0

ベストアンサー

'FileField'を使用してアップロードを試みたところ、.mp4, .avi, .MOVのファイル選択が可能になりました。

そうですか。よかったです!

150MB以上の大きいファイルをアップロードする際に必要な処理が分からないというのが問題になっています。

まずサーバと Django のプロセスのログをチェックされるのがよいのかなと思います。

Django よりも下の部分でお使いのものについて記載されていませんが、もし NGINX や uWSGI 等をお使いであればそのあたりのアップロード容量の設定が効いている可能性もあるものと思います。確認されてみてください。

もし「関連する設定をすべて見直したのに依然アップロードできない」という状況になられた場合は、実際の設定値が記述されている部分を一式記載していただくと問題解決へと向けて前進しやすくなるのではないかと思います :)

投稿2018/12/02 13:22

gh640

総合スコア1407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問