109 lines
3.0 KiB
JavaScript
109 lines
3.0 KiB
JavaScript
|
|
var sftp = null;
|
|||
|
|
var sftp_ready = false;
|
|||
|
|
var server_pwd = "";
|
|||
|
|
var session_path = "";
|
|||
|
|
var callback_success = undefined;
|
|||
|
|
//var callback_error = undefined;
|
|||
|
|
var upload_file_index = 0;
|
|||
|
|
|
|||
|
|
let sendmsg = {
|
|||
|
|
type: "",
|
|||
|
|
filepath: "",
|
|||
|
|
filename: "",
|
|||
|
|
filedata: "",
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
let msg_type = {
|
|||
|
|
connect: "connect",
|
|||
|
|
getpwd: "getpwd",
|
|||
|
|
upload: "upload",
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
let file_status = {
|
|||
|
|
success: 2, //上传成功
|
|||
|
|
error: -1, //上传失败
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
create_sftp = function () {
|
|||
|
|
sftp = new WebSocket(ws_p + '://' + window.location.host + '/v1/sftp/' + GetQueryString("sid"));
|
|||
|
|
sftp.onopen = function () {
|
|||
|
|
sftp.send(JSON.stringify(auth)); //验证权限
|
|||
|
|
|
|||
|
|
sftp.onmessage = default_msg;
|
|||
|
|
sftp.onerror = function (e) {
|
|||
|
|
sftp_ready = false
|
|||
|
|
console.log(e);
|
|||
|
|
layer.msg("SFTP连接出错")
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
sftp.onclose = function (e) {
|
|||
|
|
sftp_ready = false
|
|||
|
|
console.log(e);
|
|||
|
|
layer.msg("SFTP连接断开")
|
|||
|
|
};
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
default_msg = function (msg) {
|
|||
|
|
if (isJSON(msg.data)) {
|
|||
|
|
msg = JSON.parse(msg.data)
|
|||
|
|
if (msg.type == msg_type.connect && msg.code == 200) {
|
|||
|
|
sftp_ready = true
|
|||
|
|
server_pwd = msg.data //初始化工作路径
|
|||
|
|
} else if (msg.type == msg_type.upload) {
|
|||
|
|
if (msg.code == 200) {
|
|||
|
|
callback_success(upload_file_index, file_status.success)
|
|||
|
|
} else {
|
|||
|
|
//layer.msg("文件上传失败:" + msg.msg) //可以回调修改状态文字内容,这里为了图方便,暂时不写了;(觉得不妥,又写上了)
|
|||
|
|
callback_success(upload_file_index, file_status.error,msg.msg) //上传失败正常回调,开始处理下一个
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
getpwd = function (callback) {
|
|||
|
|
sendmsg.type = msg_type.getpwd
|
|||
|
|
sftp.onmessage = function (msg) {
|
|||
|
|
if (isJSON(msg.data)) {
|
|||
|
|
msg = JSON.parse(msg.data)
|
|||
|
|
if (msg.code == 200) {
|
|||
|
|
if (session_path == "") {
|
|||
|
|
session_path = server_pwd
|
|||
|
|
}
|
|||
|
|
callback(msg)
|
|||
|
|
} else {
|
|||
|
|
layer.msg(msg.msg)
|
|||
|
|
}
|
|||
|
|
sftp.onmessage = default_msg
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
sftp.send(JSON.stringify(sendmsg))
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
sendFile = function (fileinfo, fileData, file_index, callback) {
|
|||
|
|
sendmsg.type = msg_type.upload
|
|||
|
|
sendmsg.filepath = session_path + fileinfo.path
|
|||
|
|
sendmsg.filename = fileinfo.name
|
|||
|
|
sendmsg.filedata = fileData
|
|||
|
|
callback_success = callback
|
|||
|
|
upload_file_index = file_index
|
|||
|
|
sftp.send(JSON.stringify(sendmsg))
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
isJSON = function (str) {
|
|||
|
|
if (typeof str == 'string') {
|
|||
|
|
try {
|
|||
|
|
var obj = JSON.parse(str);
|
|||
|
|
if (typeof obj == 'object' && obj) {
|
|||
|
|
return true;
|
|||
|
|
} else {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
} catch (e) {
|
|||
|
|
//console.log('error:' + str + '!!!' + e);
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
//console.log('It is not a string!')
|
|||
|
|
}
|