El-uploadとFormDataアップロードファイル
2358 ワード
最近はel-uploadで画像をアップロードする機能で、用のel-uplodでのクリックでアップロードしています.でもアップロードをクリックしたとき.アクションのpostリクエストはトリガーされないので、いっそon-change関数にオリジナルのFormDataアップロードファイルを書き込む方法です.
幸いel-uploadにはon-changeというコールバック関数があります.on-changeというコールバック関数では,要求の送信を元のFormDataとXMLで直接実現する.最後にxhr.responseTextという文字列テキストが取得され、まずテキストをjsonオブジェクトに変換する必要があります.そして.urlでサーバから要求されたurlピクチャアドレスを取得します.
ここは注意に値する.xhr.onloadでは矢印関数の形式で書きます.this.imgurlのthisこそVueインスタンスオブジェクトです.xhr.onloadをES 5と書くと
ここのthisはxmlオブジェクトだけです.vueプロジェクトのthis指向の問題に注意
el-uploadのクリックアップロードではactionが書いたpostリクエストはトリガーされません.しかし、el-uploadのユーザーアイコンのアップロードはactionのpostリクエストをトリガーします.自分の結論は正確ではないかもしれない.友达にもっと気をつけてください.
getImgUrl () {
var fileValue = document.querySelector('.el-upload .el-upload__input')
var fd = new window.FormData()
// post 。 file, , fileType, category( )
fd.append('fileType', 'category')
fd.append('file', fileValue.files[0])
var xhr = new XMLHttpRequest()
xhr.open('POST', url, true)
// url post
xhr.send(fd)
xhr.onload = () => {
if (xhr.status === 200) {
this.imgurl = JSON.parse(xhr.responseText).url
console.log(this.imgurl)
}
}
},
handleOnchange () {
this.getImgUrl()
}
幸いel-uploadにはon-changeというコールバック関数があります.on-changeというコールバック関数では,要求の送信を元のFormDataとXMLで直接実現する.最後にxhr.responseTextという文字列テキストが取得され、まずテキストをjsonオブジェクトに変換する必要があります.そして.urlでサーバから要求されたurlピクチャアドレスを取得します.
ここは注意に値する.xhr.onloadでは矢印関数の形式で書きます.this.imgurlのthisこそVueインスタンスオブジェクトです.xhr.onloadをES 5と書くと
xhr.onload = function () {
console.log(this)
}
ここのthisはxmlオブジェクトだけです.vueプロジェクトのthis指向の問題に注意
el-uploadのクリックアップロードではactionが書いたpostリクエストはトリガーされません.しかし、el-uploadのユーザーアイコンのアップロードはactionのpostリクエストをトリガーします.自分の結論は正確ではないかもしれない.友达にもっと気をつけてください.