bsw@401: if not config.document_dir then bsw/jbe@1309: return execute.view { module = "index", view = "404" } bsw@401: end bsw@401: bsw@401: local filename = param.get("filename") bsw@401: bsw@1591: local file = io.open(encode.file_path(config.document_dir, filename)) bsw@1591: bsw@1591: if not file then bsw@1591: return execute.view { module = "index", view = "404" } bsw@1591: end bsw@401: bsw@402: if param.get("inline") then bsw@1591: request.add_header("Content-disposition", "inline; filename=" .. filename) bsw@402: else bsw@1591: request.add_header("Content-disposition", "attachment; filename=" .. filename) bsw@402: end bsw@1591: bsw@1591: local data = file:read("*a") bsw@401: bsw@1591: slot.set_layout(nil, content_type) bsw@1591: slot.put_into("data", data) bsw@401: