From 5ee66e18428a11cb5a5ca2a5c3d37802177dc48e Mon Sep 17 00:00:00 2001 From: Me No Dev Date: Thu, 16 Jun 2016 22:13:02 +0300 Subject: [PATCH] send just the filename in Content-Disposition Thanks go to: @hagai-shatz --- src/WebResponses.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/WebResponses.cpp b/src/WebResponses.cpp index 6777465..b3b1b7d 100644 --- a/src/WebResponses.cpp +++ b/src/WebResponses.cpp @@ -347,9 +347,11 @@ void AsyncFileResponse::_setContentType(String path){ } AsyncFileResponse::AsyncFileResponse(FS &fs, String path, String contentType, bool download){ - char buf[64]; _code = 200; _path = path; + int filenameStart = path.lastIndexOf('/') + 1; + char buf[26+path.length()-filenameStart]; + char* filename = (char*)path.c_str() + filenameStart; if(!download && !fs.exists(_path) && fs.exists(_path+".gz")){ _path = _path+".gz"; @@ -363,10 +365,10 @@ AsyncFileResponse::AsyncFileResponse(FS &fs, String path, String contentType, bo if(download) { // set filename and force download - snprintf(buf, sizeof (buf), "attachment; filename='%s'", path.c_str()); + snprintf(buf, sizeof (buf), "attachment; filename='%s'", filename); } else { // set filename and force rendering - snprintf(buf, sizeof (buf), "inline; filename='%s'", path.c_str()); + snprintf(buf, sizeof (buf), "inline; filename='%s'", filename); } addHeader("Content-Disposition", buf); @@ -469,4 +471,3 @@ size_t AsyncResponseStream::write(const uint8_t *data, size_t len){ size_t AsyncResponseStream::write(uint8_t data){ return write(&data, 1); } -