ElementUIのel-uploadファイルアップロード
7472 ワード
今日はプロジェクトを書くのにel-uploadを使いました.コントロール全体の機能が強いです.私の需要、フロントエンドはアップロードをクリックして、径のピクチャーは指定したフォルダに保存して、それから、保存した経路を得てフロントエンドに戻って、user.imageに値をつけて、それから完全なuserオブジェクトをデータベースに挿入します.コードがカプセル化されてactionがリクエストパスであるため、私たちはいつものようにajaxリクエストを送信し、データを返すことはできません.そこで問題が発生しました.どうやって私が保存した画像のパスを手に入れますか?実はel-uploadはすでに私たちにカプセル化してくれたが、実はとっくに考えていたはずだ.道力をカプセル化してほしい以上、バックグラウンドから戻ってきたデータをカプセル化する方法もあるに違いない.
:on-error="uploadError"
:on-success="uploadSuccess"
以上の2つの方法には,いずれも3つのパラメータがある. uploadError:function (response, file, fileList)
ここでresponseはバックグラウンドで返されるデータです.htmlコード:class="upload-demo"
ref="upload"
:action="api.addImg"
:auto-upload="false"
list-type="picture"
:file-list="fileList"
:on-error="uploadError"
:on-success="uploadSuccess"
:limit="1"
>
js submitUpload:function () {
this.$refs.upload.submit();
},
uploadSuccess:function(response, file, fileList) {
console.log(" response" +response);
console.log(" file" +file);
console.log(" fileList" +fileList);
// response: ,
app.user.userImage=response;
},
uploadError:function (response, file, fileList) {
console.log(" response" +response);
console.log(" file" +file);
console.log(" fileList" +fileList);
}
リクエストパスdata:{
api:{addImg:Config.apiBaseUrl+"user/addImg.do"}
}
制御装置 @RequestMapping("/user/addImg.do")
@ResponseBody
public String addImg(@RequestBody MultipartFile file, HttpServletRequest request, HttpServletResponse response)throws Exception{
System.out.println(" :"+file.isEmpty());
if(file != null){
String path =null;//
String imgType=null;//
String fileName = file.getOriginalFilename();//
//
imgType=fileName.indexOf(".")!=-1?fileName.substring(fileName.lastIndexOf(".")+1, fileName.length()):null;
if(imgType!=null){
if("GIF".equals(imgType.toUpperCase()) || "PNG".equals(imgType.toUpperCase()) || "JPG".equals(imgType.toUpperCase())){
//
/* String realPath = request.getSession().getServletContext().getRealPath("/");*/
String realPath = "E:\\Exercise\\workspace1\\pt\\pt-web\\src\\main\\webapp\\admin\\sys\\libs\\images\\";
//
String trueFileName=String.valueOf(System.currentTimeMillis())+fileName;
//
path=realPath+trueFileName;
System.out.println(" "+path);
//
file.transferTo(new File(path)); //
System.out.println(" ");
}else{
System.out.println(" GIF、PNG JPG ");
}
}else{
System.out.println(" ");
}
return path;
}else{
System.out.println(" ");
}
System.out.println(" :"+file.getOriginalFilename());
return "";
}
実はますますコントロールが1つのクラスの思想であることを体得することができて、例えばこのコントロールのaction、私达のクラスの中の1つの属性で、on-successのこの方法について、1つのすべての事はすべて私达の昨日完成した方法を手伝って、私达はこの方法を呼び出すだけで、私达の望むデータを得ることができます