Java Servlet的下载文件(Java Servlet Downloading File)

2019-10-29 07:38发布

所以,我有两个文件,该servlet:

package com.servlets;

import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.FileUtils;

import com.java.DataDownloader;

/**
 * Servlet implementation class downloaderServ
 */
public class DownloaderServ extends HttpServlet {
    private static final long serialVersionUID = 1L;
    DataDownloader dl;
/**
 * @see HttpServlet#HttpServlet()
 */
public DownloaderServ() {
    super();
    dl = new DataDownloader();
    // TODO Auto-generated constructor stub
}

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            dl.download();
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
    }

}

它执行处理的应用:

package com.java;
import java.io.*;
import java.net.*;
import org.apache.commons.io.*;

public class DataDownloader {

private static boolean get(String address, String fileName) {
    try {
            URL url = new URL(address);
            File f = new File(fileName);
            FileUtils.copyURLToFile(url, f);
    }
    catch(MalformedURLException e) {
            System.out.println(e);
            return false;
    }
    catch(IOException e) {
            System.out.println(e);
            return false;
    }

    return true;
}

public boolean download() {

    String[][] urls = new String[3][2];

    urls[0][0] = "http://data.london.gov.uk/datafiles/crime-community-safety/mps-recordedcrime-borough.csv";
    urls[0][1] = "crimes.csv";
    urls[1][0] = "http://data.london.gov.uk/datafiles/housing/average-house-prices-borough.xls";
    urls[1][1] = "prices.xls";
    urls[2][0] = "http://data.london.gov.uk/datastorefiles/datafiles/demographics/gla_2012rnd_SHLAA_based_borough_projections.xls";
    urls[2][1] = "population.xls";

    for (int i = 0; i < 3; i++) {
            if (get(urls[i][0], urls[i][1]) == false) {
                    System.out.println(false);
                    return false;
            }
    }
    return true;
}

}

我可以没有任何问题运行它,但似乎没有要下载任何文件。 我也打印出来的返回值(true或false),它并打印正确的。 正在下载没有这么简单文件?

Answer 1:

代码看起来很好,所以如果打印true ,你看不到任何异常,以及同时运行的程序,那么你的问题是你是不是能够找到从URL复制的文件。

由于没有目录在目的地指定File ,它必须是你的倾销文件的文件夹在其中要调用java程序。 如果它是一个IDE(Eclipse中)等与程序正在运行,刷新并检查相关项目文件夹。



Answer 2:

凯文,你显然没有得到任何的异常,这里是我的建议:请右键点击您的Eclipse项目的根文件夹,然后点击: 刷新 。 您的文件将在那里直接在该路径。

另外,我从你的问题消除在servlet标签的问题已经完全无关的servlet。 这只是你使用他们一个servlet里面,但相同的代码将在隔离工作,即使外面的Java EE的事实。

我添加文件实用程序来代替。



Answer 3:

我改变了它,绝对路径采取如

File f = new File("C:\\data\\" + fileName);

这工作。 是否有它在servlet改变它,需要一个绝对路径,并呈现相对路径不可用? 我测试了部分下载一个servlet之外,并与相对路径工程或只是下载到项目文件夹中,如果未指定任何。



文章来源: Java Servlet Downloading File