テキストファイル領域に参照ボタンを使用してアップロードを行うテキストファイル名を
入力し、アップロードボタンをクリックしてください。
ファイルがアップロードされファイル名とファイルの内容が表示されます。
≪作成時注意点≫
・HTMLファイル中にname属性付きの<INPUT TYPE="FILE">タグと
ファイルアップロード用のサブミットボタンを挿入します。
ファイルや入力された情報がWEBサーバーに送信されるように
name属性で名前をつけられたFORMタグで囲まれている必要があります。
このときFORMタグのmethod属性は"post"としてください。
【例】<form name="formItem" method="post">
<input type="file" name="fileItem">
<input type="submit" name="uploadButton" value="アップロード">
</form>
・画面上で入力されたファイル名はgetValueStringメソッドで取得します。
【例】FieldMap field = getFieldMap();
String fileName = (String) field.getValueString("fileItem");
・アップロードされたファイルの中身はgetInputStreamメソッドで
InputStreamオブジェクトとして取得可能です。
また、取得したInputStreamはpirkaがクローズするので明示的にクローズしなくて
もかまいません。
【例】FieldMap field = getFieldMap();
InputStream is = field.getInputStream("fileItem");
・setValueメソッドでファイル名を設定することもできますが、現存する大半の
ブラウザはセキュリティ対策のため設定したファイル名を画面に表示しないのでご注意ください。
ソースファイル
FileUploadSample.html サンプル画面のHTMLファイル
<html>
<head>
<title>pirka逆引きサンプル ファイルアップロード画面の作り方</title>
</head>
<body>
<center>
<span style="color: #8080ff">pirka逆引きサンプル ファイルアップロード画面の作り方</span><br>
<hr>
<form name="formItem" method="post">
<LABEL for="fileItemID">テキストファイル:</LABEL><input type="file" name="fileItem" id="fileItemID"><br>
<input type="submit" name="uploadButton" value="アップロード">
<br>
</form>
<hr>
ファイル名:<span name="fileName"></span>
<hr>
<table>
<tr>
<td>
<pre style="background-color: #e0ffe0"><span name="fileContents"></span></pre>
</td>
<tr>
</table>
<hr>
<a name="returnWindow" href="">戻る</a>
</center>
</body>
</html>
package jp.oarts.pirka.sample.instruction.is102100;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import jp.oarts.pirka.core.kernel.FieldMap;
import jp.oarts.pirka.core.win.PirkaWindow;
/**
* pirka逆引きサンプル ファイルアップロード画面の作り方
*/
public class FileUploadSample extends PirkaWindow {
/**
* アップロードボタン処理
*/
public void uploadButton() {
try {
FieldMap field = getFieldMap();
String fileName = (String) field.getValueString("fileItem");
field.setValue("fileName", fileName);
if (fileName != null && fileName.length() > 0) {
InputStream is = field.getInputStream("fileItem"); // 取り出したInputStreamはpirkaがクローズするので明示的にクローズしなくてもよい
byte[] buffer = getByte(is);
field.setValue("fileContents", new String(buffer));
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
/**
* インプットストリームをバイト列に変換
* @param is インプットストリーム
* @return バイト列
* @throws IOException
*/
private byte[] getByte(InputStream is) throws IOException {
if (is == null) {
return new byte[0];
}
byte[] buffer = new byte[2048];
ByteArrayOutputStream baos = null;
try {
baos = new ByteArrayOutputStream();
while (true) {
int len = is.read(buffer);
if (len <= 0) {
break;
}
baos.write(buffer, 0, len);
}
baos.flush();
return baos.toByteArray();
} finally {
if (baos != null) {
baos.close();
}
}
}
/**
* 戻るリンク
*
* @return
*/
public PirkaWindow returnWindow() {
return null;
}
}