不对,Updater上传临时文件列表中,文件名不应该带tmp。服务端没有这样的文件

This commit is contained in:
zqm
2026-04-09 16:53:37 +08:00
parent 1a0749f12f
commit a439908abb

View File

@@ -816,15 +816,19 @@ fn request_file_md5_for_app(
sender.send(msg_str);
}
/// 向服务器请求下载指定应用的文件
fn request_download_for_app(
sender: &cube_lib::websocket::MessageSender,
app_name: &str,
relative_path: &str,
offset: u64,
) {
// 文件名前加上应用名称目录
let full_path = format!("{}/{}", app_name, relative_path);
let msg_str = format!(
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");
log_print!("{} 发送消息:{}", ts, msg_str);
@@ -1230,11 +1234,14 @@ fn scan_local_tmp_files(app_name: &str) -> Vec<String> {
} else if path.is_file() {
if let Some(filename) = path.file_name().and_then(|n| n.to_str()) {
if filename.ends_with(".tmp") {
// 计算相对路径
// 计算相对路径,并去掉 .tmp 后缀(发送正式文件名)
if let Ok(rel) = path.strip_prefix(&upgrade_base) {
let rel_str = rel.to_string_lossy().replace('\\', "/");
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) {
log_print!("{} [AllFile] 创建空 tmp 文件: {}", ts, tmp_filename);
// 为这个正式文件发送下载请求
// log_print!("{} [AllFile] 请求下载 {}", ts, 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);
}
} else {
@@ -1785,7 +1791,7 @@ async fn run_updater(debug_mode: bool) -> bool {
if let Ok(_) = File::create(&tmp_path) {
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);
}
}
@@ -1799,12 +1805,10 @@ async fn run_updater(debug_mode: bool) -> bool {
if tmp_path.exists() {
// tmp 存在,发送请求续传
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, original_filename, file_size);
request_download_for_app(&sender, &app_name, original_filename, file_size);
} else {
// tmp 不存在,重新下载
// log_print!("{} [AllFile] 请求下载 {}", ts, original_filename);
request_download_for_app(&sender, original_filename, 0);
request_download_for_app(&sender, &app_name, original_filename, 0);
}
update_performed_clone2.store(true, std::sync::atomic::Ordering::SeqCst);
}