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