Skip to content

Commit fdcbb91

Browse files
committed
添加文件列表展示
1 parent 858cbea commit fdcbb91

File tree

4 files changed

+55
-2
lines changed

4 files changed

+55
-2
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
* https://github.com/quadrupleslap/scrap
1616
* https://github.com/enigo-rs/enigo
17+
* https://github.com/aweinstock314/rust-clipboard
18+
1719

1820
## 计划中的功能
1921

dsweb-core/src/server.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use enigo::MouseControllable;
99
use flate2::write::DeflateEncoder;
1010
use flate2::Compression;
1111
use websocket::sync::Client;
12+
use std::fs;
1213
use std::io::Write;
1314
use std::net::Ipv4Addr;
1415
use std::net::SocketAddrV4;
@@ -198,6 +199,22 @@ fn screen_stream(mut stream: Writer<TcpStream>, running: Arc<AtomicBool>) {
198199
}
199200
}
200201

202+
fn get_files(dir: &str) -> Vec<String> {
203+
let mut res = Vec::<String>::new();
204+
let mt = fs::metadata(dir);
205+
if mt.is_err() {
206+
fs::create_dir(dir).unwrap();
207+
return res;
208+
}
209+
let folder = fs::read_dir(dir).unwrap();
210+
for file in folder {
211+
let f = file.unwrap();
212+
if f.file_type().unwrap().is_file() {
213+
res.push(f.path().file_name().unwrap().to_string_lossy().to_string());
214+
}
215+
}
216+
return res;
217+
}
201218

202219
fn handle_transfer(client: Client<TcpStream>) {
203220
let (mut receiver, mut sender) = client.split().unwrap();
@@ -220,6 +237,11 @@ fn handle_transfer(client: Client<TcpStream>) {
220237
txt.insert_str(0, "copy-text ");
221238
sender.send_message(&OwnedMessage::Text(txt)).unwrap();
222239
}
240+
} else if ctx.starts_with("file-list") {
241+
let fss = get_files("files");
242+
let mut res = fss.join("&");
243+
res.insert_str(0, "file-list ");
244+
sender.send_message(&OwnedMessage::Text(res)).unwrap();
223245
}
224246
}
225247
OwnedMessage::Ping(ping) => {

dsweb-front/index.html

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,27 @@
2323
<button onclick="dsweb.copy_text()">复制出来(文本)</button>
2424
<button onclick="dsweb.paste_text()">复制进去(文本)</button>
2525
</div>
26+
<div style="margin-top: 10px;margin-left: 30%;">
27+
<button onclick="file_list_refresh()">文件列表刷新</button>
28+
<select id="files" style="width: 200px;"></select>
29+
<button onclick="">下载选中文件</button>
30+
<button>文件上传</button>
31+
</div>
2632
</body>
2733
<script>
2834
var scale_rate = 0.05;
2935
var hostdom = document.getElementById("host");
3036
function start() {
31-
dsweb.start("canvas", "transfer", hostdom.value);
37+
dsweb.start("canvas", "transfer", hostdom.value, (files) => {
38+
var doms = "";
39+
for (var index = 0; index < files.length; index++) {
40+
const element = files[index];
41+
var sdom = `<option value="${element}">${element}</option>`;
42+
doms += sdom;
43+
}
44+
var files = document.getElementById("files");
45+
files.innerHTML = doms;
46+
});
3247
}
3348
function stop() {
3449
dsweb.stop();
@@ -45,5 +60,8 @@
4560
c.style.width = `${(1 - scale_rate) * rect.width}px`;
4661
c.style.height = `${(1 - scale_rate) * rect.height}px`;
4762
}
63+
function file_list_refresh() {
64+
dsweb.file_list_refresh();
65+
}
4866
</script>
4967
</html>

dsweb-front/src/main.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ var ws = null;
44
var transfer_ws = null;
55
var transferdom = null;
66

7-
const start = (canvasid, transferid, url) => {
7+
const start = (canvasid, transferid, url, files_callback) => {
88
init().then(()=>{
99
ws = start_websocket(canvasid, url);
1010
transferdom = document.getElementById(transferid);
@@ -17,6 +17,12 @@ const start = (canvasid, transferid, url) => {
1717
if(d.startsWith("copy-text")) {
1818
d = d.replace("copy-text ", "");
1919
transferdom.value = d;
20+
} else if(d.startsWith("file-list")) {
21+
d = d.replace("file-list ", "");
22+
if(d) {
23+
var files = d.split("&");
24+
files_callback(files);
25+
}
2026
}
2127
};
2228
});
@@ -36,9 +42,14 @@ const copy_text = () => {
3642
transfer_ws.send("copy-text");
3743
}
3844

45+
const file_list_refresh = () => {
46+
transfer_ws.send("file-list");
47+
}
48+
3949
export {
4050
start,
4151
stop,
4252
paste_text,
4353
copy_text,
54+
file_list_refresh,
4455
};

0 commit comments

Comments
 (0)