Если правильно понял, то файлы d.ts в проекте, где у меня нет файлов js, не нужны?
const file = document.querySelector('input[type="file"]').files[0];
const totalBytes = file.size;
let bytesUploaded = 0;
await fetch("<upload file url>", {
method: "PUT",
headers: {
"Content-Type": "<file content type>"
},
body: file.stream().pipeThrough(new TransformStream({
transform(chunk, controller) {
controller.enqueue(chunk);
bytesUploaded += chunk.byteLength;
// report progress
},
flush(controller) {
// report finish
},
})),
duplex: "half", // нужно так как у нас не ReadableStream а TransformStream в body
});
Ванильный js это XMLHttpRequest. а fetch это высокоуровневая обертка.
Это плохо, потому что только он позволяет отслеживать прогресс загрузки
use std::{fs::File, io::Write, mem, path::PathBuf, sync::mpsc, thread};
fn main() {
let (tx, rx) = mpsc::channel::<Vec<_>>();
let handle = thread::spawn(move || {
let path = PathBuf::from("...");
let mut output = File::create(&path).unwrap_or_else(|e| {
panic!(
"failed to create file with path {:?}: {:?}",
path.as_os_str(),
e
)
});
loop {
let Ok(buf) = rx.recv() else {
break;
};
output.write(&buf).expect("failed to write");
}
});
let big_buffer = get_big_buffer_input();
let mut buf = Vec::with_capacity(1024);
for byte in big_buffer {
buf.push(byte);
if buf.len() == buf.capacity() {
let buf = mem::take(&mut buf);
tx.send(buf).expect("failed to send buf");
}
}
handle.join().unwrap();
}
fn get_big_buffer_input() -> impl Iterator<Item = u8> {
todo!()
}
mod float_trait {
pub trait Float {
const INITIAL_VALUE: Self;
}
impl Float for f32 {
const INITIAL_VALUE: Self = 0.3;
}
impl Float for f64 {
const INITIAL_VALUE: Self = 0.3;
}
}
// ...
impl<T: Float> FloatStruct<T> {
pub fn new() -> Self {
Self {
_a: 2,
_b: String::from("hi"),
c: T::INITIAL_VALUE,
}
}
}
// ...
From<f64>
, только TryFrom
Question_man, если нервов и денег не жалко, то можно и пособеситься, правда это будут алгосы, алгосы и еще раз алгосы, этапов на 5 эдак, а потом "ты сказал что ща есть 500к, что меньше чем за 700к уходить не готов, вот тебе 300к, остальное добьем премией, которую получишь если будешь упахиваться и то в опционах на покупку наших акций"