2019-06-17 23:35:47 +02:00
|
|
|
// <config-one>
|
2019-06-26 10:27:25 +02:00
|
|
|
use actix_files as fs;
|
|
|
|
use actix_web::http::header::{ContentDisposition, DispositionType};
|
|
|
|
use actix_web::{web, App, Error, HttpRequest, HttpServer};
|
2019-06-17 23:35:47 +02:00
|
|
|
|
2019-12-28 19:36:24 +01:00
|
|
|
async fn index(req: HttpRequest) -> Result<fs::NamedFile, Error> {
|
2019-06-26 10:27:25 +02:00
|
|
|
let path: std::path::PathBuf = req.match_info().query("filename").parse().unwrap();
|
|
|
|
let file = fs::NamedFile::open(path)?;
|
|
|
|
Ok(file
|
|
|
|
.use_last_modified(true)
|
|
|
|
.set_content_disposition(ContentDisposition {
|
|
|
|
disposition: DispositionType::Attachment,
|
|
|
|
parameters: vec![],
|
|
|
|
}))
|
|
|
|
}
|
2019-06-17 23:35:47 +02:00
|
|
|
|
2019-12-28 19:36:24 +01:00
|
|
|
#[actix_rt::main]
|
|
|
|
async fn main() -> std::io::Result<()> {
|
2019-06-26 10:27:25 +02:00
|
|
|
HttpServer::new(|| App::new().route("/{filename:.*}", web::get().to(index)))
|
2019-12-28 19:36:24 +01:00
|
|
|
.bind("127.0.0.1:8088")?
|
2019-06-26 10:27:25 +02:00
|
|
|
.run()
|
2019-12-28 19:36:24 +01:00
|
|
|
.await
|
2019-06-26 10:27:25 +02:00
|
|
|
}
|
2019-06-17 23:35:47 +02:00
|
|
|
// </config-one>
|