/**
* @param url
* @param param 参数对象(包含文件):param.file(el-upload)/param.target.files[0](input[file])
* @param cb 发送成功的回调函数
*/
export function requestImport(url, param, cb, queryStr) {
var file
// 加上param.raw,有的组件取回的文件对象,属性值放在raw而非file里
if (param.file || param.raw) {
file = param.file || param.raw
} else {
file = param.target.files[0]
}
var fullUrl = url + `?token=${Cookies.get('token')}`
// 设置全路径
if (fullUrl.indexOf('http://') !== 0 && fullUrl.indexOf('https://') !== 0) {
fullUrl = process.env.VUE_APP_BASE_API + fullUrl
}
var xhr = new XMLHttpRequest()
xhr.open('POST', fullUrl + (queryStr || ''))
xhr.setRequestHeader('Authorization', Cookies.get('token'))
xhr.overrideMimeType('application/octet-stream')
var chunks = file.slice(0, file.size)
this.$utils.getFileBinary(chunks, function (binary) {
if (xhr.sendAsBinary) {
xhr.sendAsBinary(binary)
} else {
xhr.send(binary)
}
})
xhr.onreadystatechange = function (e) {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
var resp = JSON.parse(xhr.responseText)
if (typeof cb === 'function') {
cb.call(this, resp)
}
}
}
}
}
原生Ajax发送文件流
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1.html 2.修改axios请求的responseType为blob,以post请求为例 3.进行请求处理
- (1)Ajax(就是XHR(XMLHttpRequest)),是异步的JavaScript和XML,是一种用于创建...
- http.request 发送服务请求 http.request返回一个可写流http.ClientRequest...