//*
下载--测试
*/
@getmapping('download ) ) ) ) ) ) ) ) ) ) )。
公共语音下载(httpservletresponseresponse ) throws SysInnerException { )。
String outFileName='下载文件名(中文).txt );
字符串文件路径=' d :\ 000\ ";
pathfile=paths.get (文件路径,'原始文件data-utf8 -副本. txt ' );
if(files.exists(file ) ) {
设置头部
//response.set content type (应用程序/force-download );
response.setheader (' content-type ',' application/octet-stream; charset=utf-8 '; //向浏览器传达输出内容为流
//Content-Disposition中指定的类型以文件扩展名显示,显示的下载对话框中的文件类型图像以文件扩展名显示。 指向并保存文件时,文件将具有filename值,保存类型取决于在Content中设置的类型。 注意:在设置Content-Disposition标头字段之前,必须设置Content-Type标头字段。
//以这种方式下载的文件名中文乱码问题
//response.setheader (' content-disposition ',' attachment; filename=' outFileName;
try {
//方法1 :命名下载的文件-此方法解决了中文乱码问题。 swagger,postman看到的是% .等。 浏览器直接输入url。 好的
response.setheader (content-disposition ),
'附件; filename=' urlencoder.encode (outfilename,ENCODING );
//方法2 :设置下载文件的名称-此方法解决了中文乱码问题。 swagger,postman看到的是% .等。 浏览器可以直接输入url以确定(
//用UTF-8取出文件名,用ISO8859-1编码。 防止弹出窗口中的文件名用中文乱码。 中文不太多。 最多支持17个中文。 因为header有150字节的限制。 )
response.setheader (content-disposition ),
'附件; filename=' new string (outfilename.getbytes (encoding ),' ISO8859-1 ' ) )
//方法3 :设置下载文件的名称-此方法解决了中文乱码问题。 postman很好。 swagger看到的是% .等。 浏览器直接输入url。 好的
response.setheader (' content-disposition ',' attachment; filename=' outFileName '; filename*=utf-8 ' '
urlencoder.encode(outfilename,ENCODING );
} catch (unsupportedencodingexceptione ) {
message='数据导入失败。' e.getMessage (;
log.error (消息;
thrownewsysinnerexception (消息;
}
try {
files.copy(file,response.getOutputStream ) );
}catch(ioexceptionex ) {
message='数据导入失败。' ex.getMessage (;
log.error (消息;
thrownewsysinnerexception (消息;
}
}
}
}