不对,Updater上传临时文件列表中,文件名不应该带tmp。服务端没有这样的文件
This commit is contained in:
@@ -816,15 +816,19 @@ fn request_file_md5_for_app(
|
|||||||
sender.send(msg_str);
|
sender.send(msg_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// 向服务器请求下载指定应用的文件
|
/// 向服务器请求下载指定应用的文件
|
||||||
fn request_download_for_app(
|
fn request_download_for_app(
|
||||||
sender: &cube_lib::websocket::MessageSender,
|
sender: &cube_lib::websocket::MessageSender,
|
||||||
|
app_name: &str,
|
||||||
relative_path: &str,
|
relative_path: &str,
|
||||||
offset: u64,
|
offset: u64,
|
||||||
) {
|
) {
|
||||||
|
// 文件名前加上应用名称目录
|
||||||
|
let full_path = format!("{}/{}", app_name, relative_path);
|
||||||
let msg_str = format!(
|
let msg_str = format!(
|
||||||
r#"{{"Type":"DownloadFile","Data":{{"filename":"{}","offset":{}}}}}"#,
|
r#"{{"Type":"DownloadFile","Data":{{"filename":"{}","offset":{}}}}}"#,
|
||||||
relative_path, offset
|
full_path, offset
|
||||||
);
|
);
|
||||||
let ts = chrono::Local::now().format("%Y-%m-%d %H:%M:%S%.3f");
|
let ts = chrono::Local::now().format("%Y-%m-%d %H:%M:%S%.3f");
|
||||||
log_print!("{} 发送消息:{}", ts, msg_str);
|
log_print!("{} 发送消息:{}", ts, msg_str);
|
||||||
@@ -1230,11 +1234,14 @@ fn scan_local_tmp_files(app_name: &str) -> Vec<String> {
|
|||||||
} else if path.is_file() {
|
} else if path.is_file() {
|
||||||
if let Some(filename) = path.file_name().and_then(|n| n.to_str()) {
|
if let Some(filename) = path.file_name().and_then(|n| n.to_str()) {
|
||||||
if filename.ends_with(".tmp") {
|
if filename.ends_with(".tmp") {
|
||||||
// 计算相对路径
|
// 计算相对路径,并去掉 .tmp 后缀(发送正式文件名)
|
||||||
if let Ok(rel) = path.strip_prefix(&upgrade_base) {
|
if let Ok(rel) = path.strip_prefix(&upgrade_base) {
|
||||||
let rel_str = rel.to_string_lossy().replace('\\', "/");
|
let rel_str = rel.to_string_lossy().replace('\\', "/");
|
||||||
let rel_str = rel_str.trim_start_matches('/').to_string();
|
let rel_str = rel_str.trim_start_matches('/').to_string();
|
||||||
tmp_files.push(rel_str);
|
// 去掉 .tmp 后缀,发送正式文件名
|
||||||
|
let official_name = rel_str.strip_suffix(".tmp")
|
||||||
|
.unwrap_or(&rel_str);
|
||||||
|
tmp_files.push(official_name.to_string());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1767,8 +1774,7 @@ async fn run_updater(debug_mode: bool) -> bool {
|
|||||||
if let Ok(_) = File::create(&tmp_path) {
|
if let Ok(_) = File::create(&tmp_path) {
|
||||||
log_print!("{} [AllFile] 创建空 tmp 文件: {}", ts, tmp_filename);
|
log_print!("{} [AllFile] 创建空 tmp 文件: {}", ts, tmp_filename);
|
||||||
// 为这个正式文件发送下载请求
|
// 为这个正式文件发送下载请求
|
||||||
// log_print!("{} [AllFile] 请求下载 {}", ts, filename);
|
request_download_for_app(&sender, &app_name, filename, 0);
|
||||||
request_download_for_app(&sender, filename, 0);
|
|
||||||
update_performed_clone2.store(true, std::sync::atomic::Ordering::SeqCst);
|
update_performed_clone2.store(true, std::sync::atomic::Ordering::SeqCst);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -1785,7 +1791,7 @@ async fn run_updater(debug_mode: bool) -> bool {
|
|||||||
if let Ok(_) = File::create(&tmp_path) {
|
if let Ok(_) = File::create(&tmp_path) {
|
||||||
log_print!("{} [AllFile] 创建空 tmp 文件: {}", ts, tmp_filename);
|
log_print!("{} [AllFile] 创建空 tmp 文件: {}", ts, tmp_filename);
|
||||||
// 为这个正式文件发送下载请求(函数内部会记录发送消息日志)
|
// 为这个正式文件发送下载请求(函数内部会记录发送消息日志)
|
||||||
request_download_for_app(&sender, filename, 0);
|
request_download_for_app(&sender, &app_name, filename, 0);
|
||||||
update_performed_clone2.store(true, std::sync::atomic::Ordering::SeqCst);
|
update_performed_clone2.store(true, std::sync::atomic::Ordering::SeqCst);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1799,12 +1805,10 @@ async fn run_updater(debug_mode: bool) -> bool {
|
|||||||
if tmp_path.exists() {
|
if tmp_path.exists() {
|
||||||
// tmp 存在,发送请求续传
|
// tmp 存在,发送请求续传
|
||||||
let file_size = fs::metadata(&tmp_path).map(|m| m.len()).unwrap_or(0);
|
let file_size = fs::metadata(&tmp_path).map(|m| m.len()).unwrap_or(0);
|
||||||
// log_print!("{} [AllFile] 请求续传 {} (已下载 {} 字节)", ts, original_filename, file_size);
|
request_download_for_app(&sender, &app_name, original_filename, file_size);
|
||||||
request_download_for_app(&sender, original_filename, file_size);
|
|
||||||
} else {
|
} else {
|
||||||
// tmp 不存在,重新下载
|
// tmp 不存在,重新下载
|
||||||
// log_print!("{} [AllFile] 请求下载 {}", ts, original_filename);
|
request_download_for_app(&sender, &app_name, original_filename, 0);
|
||||||
request_download_for_app(&sender, original_filename, 0);
|
|
||||||
}
|
}
|
||||||
update_performed_clone2.store(true, std::sync::atomic::Ordering::SeqCst);
|
update_performed_clone2.store(true, std::sync::atomic::Ordering::SeqCst);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user