|
|
@ -383,7 +383,8 @@ fn post_attachment(uuid: String, data: Data, content_type: &ContentType, headers
|
|
|
|
let base_path = Path::new(&CONFIG.attachments_folder).join(&cipher.uuid);
|
|
|
|
let base_path = Path::new(&CONFIG.attachments_folder).join(&cipher.uuid);
|
|
|
|
|
|
|
|
|
|
|
|
Multipart::with_body(data.open(), boundary).foreach_entry(|mut field| {
|
|
|
|
Multipart::with_body(data.open(), boundary).foreach_entry(|mut field| {
|
|
|
|
let name = field.headers.filename.unwrap(); // This is provided by the client, don't trust it
|
|
|
|
// This is provided by the client, don't trust it
|
|
|
|
|
|
|
|
let name = field.headers.filename.expect("No filename provided");
|
|
|
|
|
|
|
|
|
|
|
|
let file_name = HEXLOWER.encode(&crypto::get_random(vec![0; 10]));
|
|
|
|
let file_name = HEXLOWER.encode(&crypto::get_random(vec![0; 10]));
|
|
|
|
let path = base_path.join(&file_name);
|
|
|
|
let path = base_path.join(&file_name);
|
|
|
@ -393,7 +394,18 @@ fn post_attachment(uuid: String, data: Data, content_type: &ContentType, headers
|
|
|
|
.size_limit(None)
|
|
|
|
.size_limit(None)
|
|
|
|
.with_path(path) {
|
|
|
|
.with_path(path) {
|
|
|
|
SaveResult::Full(SavedData::File(_, size)) => size as i32,
|
|
|
|
SaveResult::Full(SavedData::File(_, size)) => size as i32,
|
|
|
|
_ => return
|
|
|
|
SaveResult::Full(other) => {
|
|
|
|
|
|
|
|
println!("Attachment is not a file: {:?}", other);
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
SaveResult::Partial(_, reason) => {
|
|
|
|
|
|
|
|
println!("Partial result: {:?}", reason);
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
SaveResult::Error(e) => {
|
|
|
|
|
|
|
|
println!("Error: {:?}", e);
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
let attachment = Attachment::new(file_name, cipher.uuid.clone(), name, size);
|
|
|
|
let attachment = Attachment::new(file_name, cipher.uuid.clone(), name, size);
|
|
|
|