diff options
author | Vojtěch Pejša <vojtechpejsa7@gmail.com> | 2019-03-28 10:29:56 +0000 |
---|---|---|
committer | Vojtěch Pejša <vojtechpejsa7@gmail.com> | 2019-04-04 08:51:00 +0000 |
commit | 84b5852aad17961dfa2cb6ea3351b9fa3244fe6f (patch) | |
tree | b73a63302b16fef6f8a2553127e670ffea332119 /src/file_upload.rs | |
parent | Add CLI arguments for file uploading. (diff) | |
download | miniserve-84b5852aad17961dfa2cb6ea3351b9fa3244fe6f.tar.gz miniserve-84b5852aad17961dfa2cb6ea3351b9fa3244fe6f.zip |
Fix file upload when used with random route.
Diffstat (limited to 'src/file_upload.rs')
-rw-r--r-- | src/file_upload.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/file_upload.rs b/src/file_upload.rs index 9f87724..98e3680 100644 --- a/src/file_upload.rs +++ b/src/file_upload.rs @@ -1,6 +1,6 @@ use actix_web::{ dev, error, - http::header::{ContentDisposition, LOCATION}, + http::header::{ContentDisposition, LOCATION, REFERER}, multipart, Error, FromRequest, FutureResponse, HttpMessage, HttpRequest, HttpResponse, Query, }; use futures::{future, Future, Stream}; @@ -99,6 +99,7 @@ pub fn upload_file(req: &HttpRequest<crate::MiniserveConfig>) -> FutureResponse< )) } }; + let return_path = req.headers()[REFERER].clone(); // if target path is under app root directory save file let target_dir = match &app_root_dir.clone().join(path.clone()).canonicalize() { @@ -112,9 +113,10 @@ pub fn upload_file(req: &HttpRequest<crate::MiniserveConfig>) -> FutureResponse< .map(move |item| handle_multipart(item, target_dir.clone(), override_files)) .flatten() .collect() + //.map(|s| HttpResponse::Ok().json(s)) .map(move |_| { HttpResponse::TemporaryRedirect() - .header(LOCATION, format!("{}", path.display())) + .header(LOCATION, format!("{}", return_path.to_str().unwrap_or("/"))) .finish() }) .map_err(|e| e), |