Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Playframework jquery mobile$.ajax文件上传_Jquery_Jquery Mobile_File Upload_Coffeescript_Playframework 2.1 - Fatal编程技术网

Playframework jquery mobile$.ajax文件上传

Playframework jquery mobile$.ajax文件上传,jquery,jquery-mobile,file-upload,coffeescript,playframework-2.1,Jquery,Jquery Mobile,File Upload,Coffeescript,Playframework 2.1,我想用scribe、play framework和jquery mobile为twitter上传一个简单的文件 请,任何人都可以帮助设置正确的参数,以便通过$.ajax向play framework发送文件 控制器方法: public static Result postMediaJson() { Logger.info("**** postMediaJson ****"); Logger.info("uid=" + uid); if (uid == null) {

我想用scribe、play framework和jquery mobile为twitter上传一个简单的文件

请,任何人都可以帮助设置正确的参数,以便通过$.ajax向play framework发送文件

控制器方法:

 public static Result postMediaJson() {

    Logger.info("**** postMediaJson ****");
    Logger.info("uid=" + uid);

    if (uid == null) {
        ObjectNode result = Json.newObject();
        result.put("accessTokenNull", "1");
        Logger.info("8.accessTokenNull");
        return ok(result);
    }

    Token accessToken = (Token) Cache.get(uid + "accessToken");

    Logger.info("accessToken=" + accessToken);

    if (accessToken == null) {
        ObjectNode result = Json.newObject();
        result.put("accessTokenNull", "1");
        Logger.info("9.accessTokenNull");
        return ok(result);
    }

    OAuthRequest request = new OAuthRequest(Verb.POST, UPDATEMEDIA_RESOURCE_URL);
    service.signRequest(accessToken, request);

    Logger.info("service=" + service);

    try
    {

        String vparam = form().bindFromRequest().get("status");

        Logger.info("vparam=" + vparam);

        MultipartFormData body = request().body().asMultipartFormData();
        FilePart resourceFile = body.getFile("picture");

        if (resourceFile != null) {
            String fileName = resourceFile.getFilename();
            String contentType = resourceFile.getContentType();
            File file = resourceFile.getFile();

            Logger.info("Justo antes");

            if (file != null && vparam != null) {

                Logger.info("Entra");

                // added lines
                //String myUploadPath = Play.application().configuration().getString("myUploadPath");
                //file.renameTo(new File(myUploadPath, fileName));

                MultipartEntity entity = new MultipartEntity();

                Logger.info("1Entra");

                entity.addPart("status", new StringBody(vparam)); // THIS IS THE TWITTER MESSAGE

                Logger.info("2Entra");

                entity.addPart("media", new FileBody(file)); // THIS IS THE PHOTO TO UPLOAD

                Logger.info("3Entra");

                ByteArrayOutputStream out = new ByteArrayOutputStream();
                entity.writeTo(out);

                Logger.info("4Entra");

                request.addPayload(out.toByteArray());

                Logger.info("5Entra");

                request.addHeader(entity.getContentType().getName(), entity.getContentType().getValue());

                Logger.info("6Entra");

            }else{
                ObjectNode result = Json.newObject();
                result.put("accessTokenNull", "1");
                Logger.info("10.accessTokenNull");
                return ok(result);
            }

        }else{
            ObjectNode result = Json.newObject();
            result.put("accessTokenNull", "1");
            Logger.info("11.accessTokenNull");
            return ok(result);
        }

    }catch (UnsupportedEncodingException e) {
        Logger.info("UnsupportedEncodingException");
        e.printStackTrace();
    }catch (IOException e) {
        Logger.info("IOException");
        e.printStackTrace();
    }catch (NullPointerException e) {
        Logger.info("NullPointerException");
        e.printStackTrace();
        ObjectNode result = Json.newObject();
        result.put("accessTokenNull", "1");
        Logger.info("12.accessTokenNull");
        return ok(result);
    }

    Response response = request.send();

    if ( 0L == Analytic.incPokes() )
        Logger.info("Creating first poke with media of today.");

    return ok(Json.toJson(response.getBody())); 

}
Html页面:


标题
“Quéestápasando?”

还有咖啡脚本:

  $("#pagePostMedia").on 'pageinit', (event) ->

      $("#frmPostMedia").on 'submit', (event) ->
event.preventDefault()
return alert "No puedes pedir apoyo con un mensaje en blanco. ¡Intenta escribir un mensaje inspirador!"if $("#status").val().length < 3  

$("#frmPostMedia").attr("enctype", "multipart/form-data")
$("#frmPostMedia").attr("encoding", "multipart/form-data")

formData = new FormData($(this)[0])

$.ajax '/postMediaJson',
type: 'POST'  
data: formData
contentType: 'multipart/form-data'
processData: false
cache : false
async: false
success: (data)->
  alert JSON.stringify(data)
error: (data)->
  alert "ERROR="+ JSON.stringify(data)

$("#pagePostMedia").on 'pageshow', (event) ->

      res = 140 - $("#status").val().length

      $("#lblMCount").html("Te quedan  <strong>" + res + "</strong> caracteres.")


   $("#status").on 'keyup', (event) ->

      res = 140 - $("#status").val().length

      $("#lblMCount").html("Te quedan  <strong>" + res + "</strong> caracteres.") 
$(“#pagePostMedia”)。在“pageinit”(事件)->
$(“#frmPostMedia”)。关于“提交”(事件)->
event.preventDefault()
如果$(“#status”).val()长度小于3,则返回警报“不允许任何人在白热化的过程中使用任何东西。”
$(“#frmPostMedia”).attr(“enctype”、“多部分/表单数据”)
$(“#frmPostMedia”).attr(“编码”、“多部分/表单数据”)
formData=新的formData($(此)[0])
$.ajax'/postMediaJson',
类型:“POST”
数据:formData
contentType:“多部分/表单数据”
processData:false
缓存:false
异步:false
成功:(数据)->
警报JSON.stringify(数据)
错误:(数据)->
警报“ERROR=“+JSON.stringify(数据)
$(“#pagePostMedia”)。在“pageshow”(活动)->
res=140-$(“#状态”).val().length
$(“#lblMCount”).html(“Te quedan”+res+“caracteres.”)
$(“#状态”)。在“键控”上,(事件)->
res=140-$(“#状态”).val().length
$(“#lblMCount”).html(“Te quedan”+res+“caracteres.”)

结果请求().body().asMultipartFormData()始终为null:-(

您可能需要设置以下内容:

contentType: false
我知道这对我很有用。更详细的解释是:

contentType: false