importjava.net.*;
importjava.io.*;
publicclassURLConnectionDemo{
publicstaticvoidmain(String[]args)throwsException{
=newURL("http://www.scp.e.cn/pantoschoolzz/BG/Bord/Message/DownloadMessageAttachment.aspx?ID=215");
URLConnectionuc=url.openConnection();
StringfileName=uc.getHeaderField(6);
fileName=URLDecoder.decode(fileName.substring(fileName.indexOf("filename=")+9),"UTF-8");
System.out.println("文件名为:"+fileName);
System.out.println("文件大小:"+(uc.getContentLength()/1024)+"KB");
Stringpath="D:"+File.separator+fileName;
FileOutputStreamos=newFileOutputStream(path);
InputStreamis=uc.getInputStream();
byte[]b=newbyte[1024];
intlen=0;
while((len=is.read(b))!=-1){
os.write(b,0,len);
}
os.close();
is.close();
System.out.println("下载成功,文件保存在:"+path);
}
}
//输出内容:
文件名为:090602、09-10(1)校历.xls
文件大小:42KB
下载成功,文件保存在:D: 90602、09-10(1)校历.xls
B. java实现下载文件,如果文件名为中文,下载后内容为空,求解释!
你的path变量的值是怎么来的。如果只是中文名有问题,可以尝试用URLDecoder.decode来对文件名进行URL编码转换。你debug跟踪下在URL url=new URL(path);这句时,你的path是什么值,他是否可以访问。
C. java文件下载不显示中文文件名,
//下载
response.setContentType("application/x-msdownload");
String filename = "测试.zip";
String iso_filename = SysParameter.parseGBK(filename);
response.setHeader("Content-Disposition",
"attachment;filename=" + iso_filename);
ServletOutputStream op = response.getOutputStream();
op.write(ab);
op.flush();
op.close();
SysParameter.parseGBK 方法:
// 将GBK字符转化为ISO码
public static String parseGBK(String sIn) {
if (sIn == null || sIn.equals(""))
return sIn;
try {
return new String(sIn.getBytes("GBK"), "ISO-8859-1");
} catch (UnsupportedEncodingException usex) {
return sIn;
}
}
D. java项目中,下载时怎样根据自定义的文件名去下载对象的文件(自定义的文件名和文件本身的名字不一样)
数据库里存放文件路径的表中再添加一个字段表示资源名称不就行了。
下载时用户提交带有资源名称参数的请求,收到请求后根据请求的资源名称参数去数据库查询文件的实际位置和名称,然后用文件的实际路径和名称 读取文件 得到inputstream流,把文件的inputstream写入给用户响应的response的outputstream就行了。
E. java 下载文件设置文件名
怎么的下载方式、方法。
你在后台设置一个,
<%
response.setContentType(fileminitype);
response.setHeader("Location",filename);
response.setHeader("Cache-Control", "max-age=" + cacheTime);
response.setHeader("Content-Disposition", "attachment; filename=" + filename); //filename应该是编码后的(utf-8)
response.setContentLength(filelength);
OutputStream outputStream = response.getOutputStream();
InputStream inputStream = new FileInputStream(filepath);
byte[] buffer = new byte[1024];
int i = -1;
while ((i = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, i);
}
outputStream.flush();
outputStream.close();
inputStream.close();
outputStream = null;
%>
F. java怎样读取http文件服务器上的文件列表并下载
要求文件名不能写死,那么只能到服务器上去遍历目录,如果服务器开了ftp权限的话到可以用apache的commons-net包,里面有ftp功能可以上传下载文件,也可以遍历文件
G. java 从服务器下载文件并保存到本地
进行从文件服务器下载文件到本地的具体步骤如下:
首先,客户端发起一个URL请求,获取连接对象。
接着,服务器解析URL,将指定资源返回一个输入流给客户端。
然后,建立存储目录并确定保存文件名。
之后,开始输出写入数据。
最后,关闭输入流与输出流。
为简化此过程,可以创建下载工具类,如DownLoadUtil.java,便于调用。在action类中调用此工具类中的方法。以Struts2为例,先建立工具类,便于后续调用。在action类方法里调用工具类中的方法。在Struts.xml中配置action,指定方法为docDown,无需配置其他result和param。部分代码是根据他人修改而来,若有错误之处,欢迎指正。