python + ajaxでファイルをアップロードする場合、python側は単純に下記でファイルを取得することが出来ます。
python
1 2 #form取得 3 form = cgi.FieldStorage() 4 5 #fileオブジェクト 6 objFile = form["idFile"].value #<input type="file" id="idFile"> 7 8 #ファイル開く 9 #file = open("./sample.png","wb") #binary 10 file = open("./test.txt","w") #text 11 12 #ファイル保存 13 file.write(objFile)
ですが、この場合uploadしたファイルのtext/binary判定が必要になります。
これを回避する方法としてflask等を用いれば良いのですが、今のところ、フレームワークの使用用途がこれと言ってありません。
(と言うか、フレームワークが何なのかすら、まだ良く分かっておりません(T_T)
text/binary判定もややこしそうなので、素直にフレームワークを使った方が良いでしょうか。
どんな処理をするかについては、のちのちは複雑な処理もするかもしれません。
追記
open("hoge", "w")の方は、エラーになるようです。
txt
1 2TypeError: write() argument must be str, not bytes 3
追記 その2
7.2. ファイルを読み書きする
Windows では、 mode に 'b' を追加するとファイルをバイナリモードで開きます。したがって、 'rb', 'wb', 'r+b' といったモードがあります。 Windows 上で動くPython はテキストファイルとバイナリファイルを区別しています。テキストファイルでは、読み書きの際に行末文字が自動的に少し変更されます。この舞台裏でのファイルデータ変更は、ASCII でできたテキストファイルでは差し支えないものですが、 JPEG や EXE ファイルのようなバイナリデータは破損してしまうことになるでしょう。こうしたファイルを読み書きする際にはバイナリモードを使うよう十分注意してください。 Unix では、 'b' を追加しても何も影響がないので、バイナリフォーマットを扱うためのプラットフォーム非依存な方法として利用できます。
「行末文字が自動的に少し変更されます。」 <- これが少し気になります。
あなたの回答
tips
プレビュー