2020.02.19
2020.02.18
cakephp+fine-uploader
みんな大好きcakephpにドラッグアンドドロップができたりアップロード中にプログレスバーが出たりとなかなかイイカンジのアップローダー「fine-uploader」を組み込んだときに悩んだものあれこれの記録。見なくていいです。
1.CSRF対策
fine-uploaderに限らずcakephpでformヘルパー以外でデータのやりとりすると必ず出てくる。
・1つ目。cakephp側でCSRF対策を切る
public function beforeFilter(Event $event)
{
parent::beforeFilter($event);
if ($this->request->action == ‘uploader’) {
$this->getEventManager()->off($this->Csrf);//特定のアクションのみCSRFを切る
}
}
汎用的な方法。
・2つ目。script内でtokenを送信する
request: {
params: {
aaa: document.getElementById(“aaa”).value
},
endpoint: “/uploader”,
customHeaders: {‘X-CSRF-Token’: $(‘input:hidden[name=”_csrfToken”]’).val()}//この行を追加
},
初めparamsに記述したけどダメで、customHeadersで記述したらうまくいった。もちろんこっちのほうがいい。
2.名前変更時の処理
fine-uploaderはファイル選択後に名前を変更できる機能があるけど、変更後の名前は別の変数に格納される。
ファイル本体は”qqfile”に入るが変更後の名前は”qqfilename”に保存されるので、変更後の名前は$this->request->getData(‘qqfilename’)で取得する。
3.フォーム内容の送信
form内の初期のvalue値はparamsで送信できるけど、手入力した値はparamsでは送信できない。
入力値を送るにはcallbacksのonUploadで値をセットする必要がある。
callbacks: {
onUpload: function(id){
this.setParams({name: document.getElementById(“name”).value})//ここに入力値を記述する
},
onError: function(id, filename, message, xhr) {
alert(message);
},
4.ファイルを選択したかどうか確認する方法
ファイル未選択時に送信を実行するとエラーが出てじゃまなので事前に確認したい。
ファイル選択の内容は qq-upload-list li に格納されるようなのでjqueryの
$(‘.qq-upload-list li’).length の値(何もなかったら0、入ってたらそれ以外)でファイルの有無を確認できる。
qq(document.getElementById(“trigger-upload”)).attach(“click”, function() {
if ($(‘.qq-upload-list li’).length) {//if文でファイルの有無を確認
manualUploader.uploadStoredFiles();
}
});
参考にしたサイトさま
Matsup’s blog
fine-uploader documentation
ほかにも参考にしたサイトあったけど忘れた…
2020.02.17
ゲーム進捗
アークナイツ。初イベ。交換アイテムはほぼほぼ無事交換完了。
ここまでできれば十分じゃないかと。そもそもラストのはまだ試行してないけど。
ようやく2つ目の討伐数400に到達。やっと石1600もらえます。今のところ再現性が低い・・・。
こんな感じ。星4風水士役のパフューマーが第2昇進一番乗り。2番手はメイジ役のスカイフレア。隕石落としで敵を殲滅☆
3番手はまほけん役のシルバーアッシュの予定。素材集め中。砲術士役のメテオリーテは第2昇進するとコスト増えるのでしばらく様子見。
2020.02.16
[665枚目]もみこいし
2020.02.13
[664枚目]レミフラ
そういえば、静岡までの交通どうやって行くか決めてないねぇ。新幹線か夜行か。 Tag: フランドール・スカーレット レミリア・スカーレット 東方PROJECT
2020.02.09
ぐるぐる周回
2020.02.08
第92回イラスト合宿でした
2020.02.06
新作試作グッズその2
2020.02.05
初のイベント
2020.02.04