Fileと複数の文字列を含むフォームデータの送信に異常に時間がかかる

50 views
Skip to first unread message

Sumi Soichi

unread,
Apr 4, 2016, 7:09:18 AM4/4/16
to 日本Playframeworkユーザー会
はじめまして.鷲見と申します.

現在,PlayFramework2.5+Java+組み込みNettyサーバ でブラウザから画像といくつかの文字列をサーバに送り,
画像をアスキーアートに変換して返すということをしているのですが,
画像と,アスキーアートへの変換の設定を示す文字列が送信されてからサーバに届くまでに20秒ほどかかってしまいます.

画像のみをサーバへ送る場合には0.5秒もかからずデータを送信できています.
アドバイスをいただければ幸いです.


ソースは以下のようになっています
public Result aaConvert(){
    MultipartFormData.FilePart picture=request().body().asMultipartFormData().getFile("picture");
    Map<String,String[]> form= request().body(). asMultipartFormData().asFormUrlEncoded();
    if(picture!=null){
        File file = (File)picture.getFile();
        try {
            String aa = ConvertionUtil.aaConvertion(file,form);
            ObjectNode result= Json.newObject();
            result.put("aa",aa);
            return ok(result);
        }catch (IOException e) {
            return badRequest("invalid request");
        }
    }
    return badRequest("picture is null");
}


id=picture以外のnameを消すと送信がすぐに完了します.
<form id="settingForm"  method="post" action="">
<div class="row">
<div class="col-md-3">
<label class="control-label">Select File</label>
<input id="input-20" type="file" name="picture" class="file-loading">
</div>
<div class="col-md-9">
<div class="form-group">
<label for="select">画像サイズ</label>
<select class="form-control" id="sel1" name="sel1">
<option value="NORESIZE">変更しない</option>
<option value="RESIZE1">640x480</option>
<option value="RESIZE2">800x600</option>
<option value="RESIZE3">960x640</option>
<option value="RESIZE4">1024x768</option>
<option value="RESIZE5">1280x960</option>
<option value="RESIZE6">1920x1080</option>
</select>
<b>輪郭抽出精度 </b>
<input id="slider" name="slider" type="text" data-slider-min="1" data-slider-max="100" data-slider-step="1" data-slider-value="50"/>
<span id="sliderText">Current Slider Value: <span id="sliderVal">50</span></span>
<div class="form-group">
<label for="select">抽出比較範囲</label>
<select class="form-control" id="sel2" name="sel2">
<option value="3">3x3</option>
<option value="5">5x5</option>
<option value="7">7x7</option>
<option value="9">9x9</option>
</select>
</div>
<b>フォント</b>
<label class="radio-inline"><input type="radio" id="radio1" name="font" checked="checked" value="monospaced" >Monospaced</label>
<label class="radio-inline"><input type="radio" id="radio2" name="font" value="proportional">Proportional</label>
<div class="checkbox">
<b>トーン処理</b>
<label><input type="checkbox" name="tone" value="true">トーン処理を行う</label>
</div>
</div>
</div>
</div>
<buttun id="submit" class="btn btn-primary">変換</buttun>
</form>


var endpoint='/';
$(function() {
    $("#submit").on('click', function(evt) {

        if(!window.FormData)
            alert("InternetExproler9以前には対応していません");

        if(!$("#input-20")[0].files[0])
            alert("ファイルを選択してください");

        var form = $("#settingForm").get()[0];
        var formData = new FormData(form);
       
        $.ajax({
            url: endpoint,
            method: 'post',
            dataType: 'json',
            data: formData,
            processData: false,
            contentType: false
        }).done(function (data) {
            console.log('SUCCESS', data);
            editor.setValue(data.aa);
        }).fail(function (jqXHR, textStatus, errorThrown) {
            console.log('ERROR', jqXHR, textStatus, errorThrown);
        });
        return false;
    });
});



Sumi Soichi

unread,
Apr 5, 2016, 11:58:03 AM4/5/16
to 日本Playframeworkユーザー会
play 2.5のバグでした.
2.5.1で修正されました.
https://github.com/playframework/playframework/issues/5751

2016年4月4日月曜日 20時09分18秒 UTC+9 Sumi Soichi:
Reply all
Reply to author
Forward
0 new messages