SparkとJava8のファイルダウンロードサンプル
8989 ワード
Spark-Java のファイルダウンロードサンプル。
Servletでの処理そのまま。
起動してhttp://localhost:4567/file にアクセスするとプロジェクトのroot/public/資料.xlsxがダウンロードされる。
DownloadFileSample
package spqrk;
import static spark.Spark.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import spark.utils.IOUtils;
public class HelloWorld {
public static void main(String[] args) {
before("/hello", (req, res) -> {
System.out.println("/helloの前処理");
});
get("/hello", (req, res) -> {
System.out.println("/hello");
return "Hello Spark World";
});
get("/file", (req, res) -> {
System.out.println("ファイルをダウンロード");
// ダウンロードファイルの作成
String fileName = "資料.xlsx";
// プロジェクトのroot/public/ フォルダが使用される。
File file = new File("public/" + fileName);
String savePath = file.getAbsolutePath();
System.out.println("ダウンロードするファイル=" + savePath);
byte[] fileContent = null;
try (InputStream is = new FileInputStream(savePath);) {
fileContent = IOUtils.toByteArray(is);
} catch (FileNotFoundException e) {
throw new RuntimeException(fileName + " not found");
} catch (IOException e) {
throw new RuntimeException(e);
}
// ファイル名の文字化け対策。
String downName = URLEncoder.encode(fileName, "UTF-8");
res.raw().setContentType("application/octet-stream");
res.raw().setHeader("Content-Disposition", "attachment; filename=" + downName);
res.raw().setContentLength(fileContent.length);
try (OutputStream os = res.raw().getOutputStream();) {
os.write(fileContent);
os.flush();
} catch (IOException e) {
throw new RuntimeException(e);
}
return "";
});
}
}
Author And Source
この問題について(SparkとJava8のファイルダウンロードサンプル), 我々は、より多くの情報をここで見つけました https://qiita.com/mmatsuoka@github/items/6e36e164a01e74162e8f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .