Playframework jquery mobile$.ajax文件上传
我想用scribe、play framework和jquery mobile为twitter上传一个简单的文件 请,任何人都可以帮助设置正确的参数,以便通过$.ajax向play framework发送文件 控制器方法: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) {
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