137 lines
5.1 KiB
JavaScript
137 lines
5.1 KiB
JavaScript
/**放大*/
|
||
function viewImg(item) {
|
||
layer.photos({
|
||
shade: 0.5,
|
||
footer: false,
|
||
photos: {
|
||
"title": "图片预览",
|
||
"start": 0,
|
||
"data": [
|
||
{
|
||
"pid": 1,
|
||
"src": imgUrl + item.originalFilePath + "?token=" + tokens,
|
||
}
|
||
]
|
||
},
|
||
});
|
||
}
|
||
|
||
/**原图下载*/
|
||
function imgDownLoad(item) {
|
||
let orginalPath = item.originalFilePath;
|
||
let obj = {
|
||
imgPath: orginalPath,
|
||
}
|
||
let loadingMsg = layer.msg("原图下载中,请稍候...", {icon: 16, scrollbar: false, time: 0,});
|
||
let url = dataUrl + "/common/download/downloadImage?token=" + tokens + "&encryptedData=" + encodeURIComponent(encryptCBC(JSON.stringify(obj)));
|
||
let xhr = new XMLHttpRequest();
|
||
xhr.open("get", url, true);
|
||
xhr.responseType = "blob"; // 转换流
|
||
xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8')
|
||
xhr.onload = function () {
|
||
layer.close(loadingMsg);
|
||
if (this.status === 200) {
|
||
let blob = this.response;
|
||
var a = document.createElement("a");
|
||
var url = window.URL.createObjectURL(blob);
|
||
a.href = url;
|
||
a.download = orginalPath.substring(orginalPath.lastIndexOf('/') + 1, orginalPath.length); // 文件名
|
||
} else {
|
||
layer.msg("原图下载发生异常,请稍后重试", {icon: 16, scrollbar: false, time: 2000});
|
||
}
|
||
a.click();
|
||
window.URL.revokeObjectURL(url);
|
||
};
|
||
// xhr.send(params);
|
||
xhr.send();
|
||
}
|
||
|
||
/**水印下载*/
|
||
function waterImgDownLoad(item) {
|
||
/* let orginalPath = item.originalFilePath;
|
||
let obj = {
|
||
imgPath: orginalPath,
|
||
}
|
||
let loadingMsg = layer.msg("水印图片下载中,请稍候...", {icon: 16, scrollbar: false, time: 0,});
|
||
let url = dataUrl + "/common/download/downloadImage?token=" + tokens + "&encryptedData=" + encodeURIComponent(encryptCBC(JSON.stringify(obj)));
|
||
let xhr = new XMLHttpRequest();
|
||
xhr.open("get", url, true);
|
||
xhr.responseType = "blob"; // 转换流
|
||
xhr.setRequestHeader('Content-Type','application/json;charset=UTF-8')
|
||
xhr.onload = function () {
|
||
layer.close(loadingMsg);
|
||
if (this.status === 200) {
|
||
let blob = this.response;
|
||
var a = document.createElement("a");
|
||
var url = window.URL.createObjectURL(blob);
|
||
a.href = url;
|
||
a.download = orginalPath.substring(orginalPath.lastIndexOf('/') + 1,orginalPath.length); // 文件名
|
||
} else {
|
||
layer.msg("水印图片下载发生异常,请稍后重试", {icon: 16, scrollbar: false, time: 2000});
|
||
}
|
||
a.click();
|
||
window.URL.revokeObjectURL(url);
|
||
};
|
||
// xhr.send(params);
|
||
xhr.send();*/
|
||
|
||
function downloadImage(imageUrl) {
|
||
let orginalPath = item.originalFilePath;
|
||
let obj = {
|
||
imgPath: orginalPath,
|
||
}
|
||
$.ajax({
|
||
url: dataUrl + "/common/download/downloadImage?token=" + tokens,
|
||
type: 'GET',
|
||
data: {
|
||
encryptedData: encodeURIComponent(encryptCBC(JSON.stringify(obj)))
|
||
},
|
||
xhrFields: {
|
||
responseType: 'blob' // 重要:指定响应类型为blob
|
||
},
|
||
success: function (data, status, xhr) {
|
||
// 检查是否是blob数据(图片)
|
||
if (data instanceof Blob) {
|
||
// 创建临时URL用于下载
|
||
var blobUrl = URL.createObjectURL(data);
|
||
|
||
// 创建下载链接
|
||
var a = document.createElement('a');
|
||
a.href = blobUrl;
|
||
a.download = orginalPath.substring(orginalPath.lastIndexOf('/') + 1,orginalPath.length); // 提取文件名
|
||
document.body.appendChild(a);
|
||
a.click();
|
||
|
||
// 清理
|
||
setTimeout(function () {
|
||
document.body.removeChild(a);
|
||
URL.revokeObjectURL(blobUrl);
|
||
}, 100);
|
||
} else {
|
||
// 如果返回的不是blob,可能是错误信息
|
||
console.error('服务器返回意外响应:', data);
|
||
alert('下载失败: 服务器返回无效数据');
|
||
}
|
||
},
|
||
error: function (xhr, status, error) {
|
||
// 尝试解析错误信息
|
||
var errorMsg = '下载失败';
|
||
if (xhr.responseText) {
|
||
try {
|
||
var errorResponse = JSON.parse(xhr.responseText);
|
||
errorMsg = errorResponse.message || errorMsg;
|
||
} catch (e) {
|
||
errorMsg = xhr.responseText;
|
||
}
|
||
}
|
||
alert(errorMsg);
|
||
}
|
||
});
|
||
}
|
||
|
||
// 使用示例
|
||
$('#download-btn').click(function () {
|
||
var imageUrl = $('#image-url').val();
|
||
downloadImage(imageUrl);
|
||
});
|
||
} |