下载CSDN网页上的文件怎么下载下来件

网页上文件下载功能的实现
前面有介绍过文件传输的实现,今天来教教大家如何实现网页上的文件下载功能~
仅谈文件传输的话,这与javaSE中学的IO流如出一辙,换汤不换药罢了.
以下为本次小课题的代码实现:
import java.io.FileInputS
import java.io.IOE
import java.net.URLE
import javax.servlet.ServletE
import javax.servlet.ServletOutputS
import javax.servlet.http.HttpS
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
public class Test extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//通过路径得到一个输入流
String path = this.getServletContext().getRealPath("/WEB-INF/classes/sourse/photo.jpg");
FileInputStream fis = new FileInputStream(path);
//创建字节输出流
ServletOutputStream sos = response.getOutputStream();
//执行输出操作
int len = 1;
byte[] b = new byte[1024];
while((len = fis.read(b)) != -1) {
sos.write(b, 0, len);
/*方法内可以不关流*/
sos.close();
fis.close();
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
以上代码实现的仅仅是B/S模式的文件传输功能,效果图如下:
要想实现图片的下载功能少不了以下几段代码:
//得到要下载的文件名
String filename = path.substring(path.lastIndexOf("\\")+1);
// "\\" == "/" 第一个"\"用于转意
//设置文件名的编码
filename = URLEncoder.encode(filename, "UTF-8");
//告知客户端要下载的文件
response.setHeader("content-disposition", "filename=" + filename);
response.setHeader("content-type", "image/jpeg");
//jpeg的简写为jpg
Content-type:下载文件类型
代码全了,这下看看效果如何~
网页刚一打开,文件下载的小窗就自动弹出来了.
有木有心动呢,心动不如行动,赶快上手试试吧~
查看相关git代码请移步:
喜欢就请关注我,你们的关注是我最大的动力~
没有更多推荐了,文件下载的实现
实现文件下载,备注已经做好,这里就不详细说明了
public void downloadLocal(HttpServletResponse response)
throws UnsupportedEncodingException, FileNotFoundException {
String fileName = "红太狼.txt".toString(); // 文件的默认保存名
//更改文件名编码String gFileName = URLEncoder.encode(fileName, "UTF-8");// 读到流中
//要下载文件的存放路径InputStream inStream = new FileInputStream("E:/aa.txt");
// 设置输出的格式
//去除前后空格response.reset();//激活浏览器弹出窗口response.setContentType("application/x-msdownload");
//浏览器弹出窗口显示的文件名response.addHeader("Content-Disposition", " filename="+gFileName);// 循环取出流中的数据byte[] b = new byte[1024];try {while ((len = inStream.read(b)) & 0)response.getOutputStream().write(b, 0, len);inStream.close();//关闭流} catch (IOException e) {e.printStackTrace();}}
发现一个小问题就是,如进行下载名为:文件(3).txt,下载时显示名为:文件+(3).txt
解决办法是:把+进行替换
也就是:String gFileName = URLEncoder.encode(fileName, "UTF-8");String dFileName = gFileName.replaceAll("\\+", "%20");
获取要下载的文件大小
FileChannel fc= ((FileInputStream) inStream).getChannel();
//文件大小
logger.info("文件大小为:"+fc.size()+"k");
没有更多推荐了,文件的下载
[问题点数:50分,结帖人putiwumu22]
本版专家分:0
结帖率 100%
CSDN今日推荐
本版专家分:12
本版专家分:0
结帖率 100%
本版专家分:12
本版专家分:0
结帖率 100%
本版专家分:11
本版专家分:20
本版专家分:0
结帖率 100%
本版专家分:88637
2016年8月 PHP大版内专家分月排行榜第二2016年4月 PHP大版内专家分月排行榜第二2015年12月 PHP大版内专家分月排行榜第二2014年5月 PHP大版内专家分月排行榜第二2013年11月 PHP大版内专家分月排行榜第二2013年10月 PHP大版内专家分月排行榜第二2013年9月 PHP大版内专家分月排行榜第二2013年8月 PHP大版内专家分月排行榜第二2013年7月 PHP大版内专家分月排行榜第二2013年6月 PHP大版内专家分月排行榜第二2013年5月 PHP大版内专家分月排行榜第二2013年4月 PHP大版内专家分月排行榜第二2013年3月 PHP大版内专家分月排行榜第二2013年2月 PHP大版内专家分月排行榜第二2013年1月 PHP大版内专家分月排行榜第二2012年12月 PHP大版内专家分月排行榜第二2012年11月 PHP大版内专家分月排行榜第二2012年10月 PHP大版内专家分月排行榜第二2012年9月 PHP大版内专家分月排行榜第二2012年7月 PHP大版内专家分月排行榜第二2012年6月 PHP大版内专家分月排行榜第二2012年5月 PHP大版内专家分月排行榜第二2011年9月 PHP大版内专家分月排行榜第二2011年8月 PHP大版内专家分月排行榜第二2011年7月 PHP大版内专家分月排行榜第二
2017年3月 PHP大版内专家分月排行榜第三2016年12月 PHP大版内专家分月排行榜第三2016年11月 PHP大版内专家分月排行榜第三2014年10月 PHP大版内专家分月排行榜第三2014年8月 PHP大版内专家分月排行榜第三2014年3月 PHP大版内专家分月排行榜第三2014年1月 PHP大版内专家分月排行榜第三2012年8月 PHP大版内专家分月排行榜第三2012年2月 PHP大版内专家分月排行榜第三2012年1月 PHP大版内专家分月排行榜第三2011年12月 PHP大版内专家分月排行榜第三2011年11月 PHP大版内专家分月排行榜第三2011年6月 PHP大版内专家分月排行榜第三
本版专家分:56086
2015年8月优秀小版主
2012年2月 PHP大版内专家分月排行榜第一2012年1月 PHP大版内专家分月排行榜第一2011年11月 PHP大版内专家分月排行榜第一2011年9月 PHP大版内专家分月排行榜第一
2012年3月 PHP大版内专家分月排行榜第二2011年12月 PHP大版内专家分月排行榜第二2011年10月 PHP大版内专家分月排行榜第二
2013年2月 PHP大版内专家分月排行榜第三2012年9月 PHP大版内专家分月排行榜第三2012年7月 PHP大版内专家分月排行榜第三2012年5月 PHP大版内专家分月排行榜第三
本版专家分:0
结帖率 100%
本版专家分:0
结帖率 100%
匿名用户不能发表回复!|
CSDN今日推荐使用HTTP协议下载文件
为了测试方便,在自己的电脑上开一个web服务Tomcat,在Tomcat的webapps文件夹里放测试下载用的文件
在cmd的ipconfig指令下查看自己的主机的IP地址。
之前没有接触过Tomcat,就先按网上介绍的安装教程下载Tomcat,并在Eclipse配置好Tomcat
http://blog.chinaunix.net/uid--id-167705.html
初次安装配置会出现一些错误,但在网上都能找到解决办法,直到Tomcat正常工作
使用HTTP·协议下载文件:
1、创建一个HttpURLConnection对象
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
2、获得一个InputStream对象
InputStream inputStream = urlConn.getInputStream();
3、访问网络的权限(需要在AndroidMainfest.xml配置好)
&uses-permission android:name="android.permission.INTERNET"/&
将下载的文件写到SDCard
1、得到当前设备SD卡的目录
SDPATH = Environment.getExternalStorageDirectory() + "/";
2、访问SD的权限(同样需要在AndroidMainfest.xml配置好)
&uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/&例程:(mars Android视频学习)
Download.java
import mars.utils.HttpD
import android.annotation.SuppressL
import android.annotation.TargetA
import android.app.A
import android.os.B
import android.os.B
import android.os.StrictM
import android.view.V
import android.view.View.OnClickL
import android.widget.B
public class Download extends Activity {
private Button downloadTxtB
private Button downloadMp3B
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
@SuppressLint("NewApi")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
downloadTxtButton = (Button)findViewById(R.id.downloadText);
downloadMp3Button = (Button)findViewById(R.id.downloadMp3);
downloadTxtButton.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
HttpDownloader httpDownloader = new HttpDownloader();
String lrc = httpDownloader.download("http://222.199.230.116:8080/mp3/Test-2.lrc");
System.out.println(lrc);
downloadMp3Button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
HttpDownloader httpDownloader = new HttpDownloader();
int result = httpDownloader.downFile("http://222.199.230.116:8080/mp3/Test-2.mp3","voa/","Test.mp3");
System.out.println(result);
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().
detectDiskWrites().detectNetwork().penaltyLog().build());
在Android4.0以上的模拟器好像对联网下载文件好像有要求,所以在.java文件要配置:
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().
detectDiskWrites().detectNetwork().penaltyLog().build());刚才没配置一直在报错不能下载
详情请看http://www.cnblogs.com/Lewis/p/3298994.html
FileUtils.java
import java.io.F
import java.io.FileOutputS
import java.io.IOE
import java.io.InputS
import java.io.OutputS
import android.os.E
public class FileUtils {
private String SDPATH;
public String getSDPATH(){
return SDPATH;
public FileUtils(){
//得到当前外部存储设备的目录
SDPATH = Environment.getExternalStorageDirectory() + "/";
* 在SD卡上创建文件
* @throws IOException
public File createSDFile(String fileName) throws IOException{
File file = new File(SDPATH + fileName);
file.createNewFile();
* 在SD卡上创建目录
* @param dirName
public File createSDDir(String dirName){
File dir = new File(SDPATH + dirName);
dir.mkdirs();
* 判断SD卡上的文件夹是否存在
public boolean isFileExist(String fileName){
File file = new File(SDPATH + fileName);
return file.exists();
* 将一个InputStream里面的数据写入到SD卡中
public File write2SDFromInput(String path,String fileName,InputStream input){
File file =
OutputStream output =
createSDDir(path);
file = createSDFile(path + fileName);
output = new FileOutputStream(file);
byte buffer [] = new byte[4 * 1024];
while((input.read(buffer)) != -1){
output.write(buffer);
output.flush();
}catch(Exception e){
e.printStackTrace();
output.close();
}catch(Exception e){
e.printStackTrace();
HttpDownloader.java
import java.io.BufferedR
import java.io.F
import java.io.IOE
import java.io.InputS
import java.io.InputStreamR
import java.net.HttpURLC
import java.net.MalformedURLE
import java.net.URL;
public class HttpDownloader {
private URL url =
* 根据URL下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文件当中的内容
* 1.创建一个URL对象
* 2.通过URL对象,创建一个HttpURLConnection对象
* 3.得到InputStram
* 4.从InputStream当中读取数据
* @param urlStr
public String download(String urlStr){
StringBuffer sb = new StringBuffer();
String line =
BufferedReader buffer =
// 创建一个URL对象
url = new URL(urlStr);
// 创建一个Http连接
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
// 使用IO流读取数据
buffer = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
while((line = buffer.readLine()) != null){
sb.append(line);
}catch(Exception e){
e.printStackTrace();
buffer.close();
}catch(Exception e){
e.printStackTrace();
return sb.toString();
* 该函数返回整形 -1:代表下载文件出错
0:代表下载文件成功
1:代表文件已经存在
public int downFile(String urlStr, String path, String fileName){
InputStream inputStream =
FileUtils fileUtils = new FileUtils();
if(fileUtils.isFileExist(path + fileName)){
inputStream = getInputStreamFromUrl(urlStr);
File resultFile = fileUtils.write2SDFromInput(path, fileName, inputStream);
if(resultFile == null){
return -1;
}catch(Exception e){
e.printStackTrace();
return -1;
inputStream.close();
}catch(Exception e){
e.printStackTrace();
* 根据URL得到输入流
* @param urlStr
* @throws MalformedURLException
* @throws IOException
public InputStream getInputStreamFromUrl(String urlStr)
throws MalformedURLException, IOException{
url = new URL(urlStr);
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
InputStream inputStream = urlConn.getInputStream();
return inputS
}结果示意图
刚开始下载不成功,一直输出-1,
后来百度、修改,终于输出0,下载成功,把程序调通~
没有更多推荐了,帮忙从CSDN上下载一个文件_百度知道
帮忙从CSDN上下载一个文件
我有更好的答案
adaptive_anisotropic_2D_gaussian_filter.rar文件已下载见附件搞^定请及时采纳
采纳率:69%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 网页上的文件怎么下载下来 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信