Glassfish 3.1.2.2、Sql Server 2005、PF 3.4、およびMojarra2.1.6を使用しています。IdeEclipseJuno。
ストアドプロシージャを使用し、jarcommons-io.1.4とcommons-fileupload.1.2.1を追加します
データベースでは、すべてのファイル(pdf、doc、xlsなど)をvarbinaryに保存します。 私はこれらの疑問を持っています:
- p:fileuploadを使用して任意のファイル(pdf、doc、xlsなど)をアップロードし、データベースにvarbinaryファイルとして保存するにはどうすればよいですか?
- p:FileDownloadを使用してデータベースの任意のvarbinaryファイルをダウンロードするにはどうすればよいですか?
- p:mediaでpdfを表示し、データベースからファイルのバイナリを回復するにはどうすればよいですか?
一つの質問
p:fileuploadを使用してファイル(pdf、doc、xlsなど)をアップロードしてデータベースに保存するにはどうすればよいですか?
ドキュメント以来、私はp:fileuploadを理解していません。このメソッドhandlerFileUploadを使用して、ファイルをアップロードします。最初にイベントのinputScreamを取得します
<p:fileUpload fileUploadListener="#{fileBean.handleFileUpload}" />
public class FileBean {
public void handleFileUpload(FileUploadEvent event) {
UploadedFile file = event.getFile();
//application code
}
}
file.getInputStreamを使用して、ストアドプロシージャにBinaryStream setBinaryStream(4、inputStream、(int)inputStream.toString()。getBytes()。length);を送信しました。
これはいい??
2つの質問
p:FileDownloadを使用して任意のバイナリファイルをダウンロードするにはどうすればよいですか?
getBytesを使用してデータベースを作成してから、varbinaryを回復します。ストアドプロシージャを使用することを忘れないでください。
このメソッドは、リクエストスコープを持つクラスにあります。
public byte[] ArchivoBin(int CDTPEnlaceImagen, int iddoc) {
Context();
Null_Rs_and_Proc();
Connection(0);
PA(2, 51);
[b]byte[] file = null;[/b]
try {
setProc(getCon().prepareCall(getCall()));
getProc().setInt(1, CDTPEnlaceImagen);
getProc().setInt(2, iddoc);
setRs(getProc().executeQuery());
getRs().next();
[b]file = getRs().getBytes(1);[/b]
System.out.println(file);
}
catch(SQLException e) {
System.out.println("Exception ArchivoBin");
System.out.println(e);
}
CloseConnections();
return file;}
しかし、ファイルをバイト単位で取得するときは、バイトをinputscreamに変換してから、inputscreamをDefaultStreamedContentに変換します。
この部分は、リクエストスコープを持つクラスです。
byte[] bytes = null;
bytes = getRecuperarDatos().ArchivoBin(
1,
idarchivo);
//Archivo is a Session Scope
getArchivo().setFile(new DefaultStreamedContent(
[b]new ByteArrayInputStream(bytes)[/b],
"application/pdf",
nomArchivo));
f:downloadはファイルを正しく取得しません、それは壊れています。
<h:commandButton value="Download">
[b]<p:fileDownload value="#{archivo.file}"[/b] />
</h:commandButton>
なぜこんなに悪いのかわからない
3つの質問
データベースからvarbinaryファイルを回復するp:mediaでPDFを表示するにはどうすればよいですか?
これは、2つの質問に似ています。p:mediaは「PDFドキュメントの読み込み中にエラーが発生しました」と言います