@@ -2,6 +2,7 @@ use futures_lite::{io, prelude::*};
2
2
use serde:: { de:: DeserializeOwned , Serialize } ;
3
3
4
4
use std:: fmt:: { self , Debug } ;
5
+ use std:: path:: PathBuf ;
5
6
use std:: pin:: Pin ;
6
7
use std:: task:: { Context , Poll } ;
7
8
@@ -56,6 +57,7 @@ pin_project_lite::pin_project! {
56
57
reader: Box <dyn AsyncBufRead + Unpin + Send + Sync + ' static >,
57
58
mime: Mime ,
58
59
length: Option <usize >,
60
+ pub ( crate ) file_name: Option <PathBuf >,
59
61
}
60
62
}
61
63
@@ -78,6 +80,7 @@ impl Body {
78
80
reader : Box :: new ( io:: empty ( ) ) ,
79
81
mime : mime:: BYTE_STREAM ,
80
82
length : Some ( 0 ) ,
83
+ file_name : None ,
81
84
}
82
85
}
83
86
@@ -108,6 +111,7 @@ impl Body {
108
111
reader : Box :: new ( reader) ,
109
112
mime : mime:: BYTE_STREAM ,
110
113
length : len,
114
+ file_name : None ,
111
115
}
112
116
}
113
117
@@ -151,6 +155,7 @@ impl Body {
151
155
mime : mime:: BYTE_STREAM ,
152
156
length : Some ( bytes. len ( ) ) ,
153
157
reader : Box :: new ( io:: Cursor :: new ( bytes) ) ,
158
+ file_name : None ,
154
159
}
155
160
}
156
161
@@ -200,6 +205,7 @@ impl Body {
200
205
mime : mime:: PLAIN ,
201
206
length : Some ( s. len ( ) ) ,
202
207
reader : Box :: new ( io:: Cursor :: new ( s. into_bytes ( ) ) ) ,
208
+ file_name : None ,
203
209
}
204
210
}
205
211
@@ -245,6 +251,7 @@ impl Body {
245
251
length : Some ( bytes. len ( ) ) ,
246
252
reader : Box :: new ( io:: Cursor :: new ( bytes) ) ,
247
253
mime : mime:: JSON ,
254
+ file_name : None ,
248
255
} ;
249
256
Ok ( body)
250
257
}
@@ -309,6 +316,7 @@ impl Body {
309
316
length : Some ( bytes. len ( ) ) ,
310
317
reader : Box :: new ( io:: Cursor :: new ( bytes) ) ,
311
318
mime : mime:: FORM ,
319
+ file_name : None ,
312
320
} ;
313
321
Ok ( body)
314
322
}
@@ -363,7 +371,7 @@ impl Body {
363
371
P : AsRef < std:: path:: Path > ,
364
372
{
365
373
let path = path. as_ref ( ) ;
366
- let mut file = async_std:: fs:: File :: open ( path) . await ?;
374
+ let mut file = async_std:: fs:: File :: open ( & path) . await ?;
367
375
let len = file. metadata ( ) . await ?. len ( ) ;
368
376
369
377
// Look at magic bytes first, look at extension second, fall back to
@@ -377,6 +385,7 @@ impl Body {
377
385
mime,
378
386
length : Some ( len as usize ) ,
379
387
reader : Box :: new ( io:: BufReader :: new ( file) ) ,
388
+ file_name : Some ( path. to_path_buf ( ) ) ,
380
389
} )
381
390
}
382
391
0 commit comments