So implementieren Sie die XPages FileUpload-Steuerungsoption für mehrere DateienJava

Java-Forum
Anonymous
 So implementieren Sie die XPages FileUpload-Steuerungsoption für mehrere Dateien

Post by Anonymous »

Ich habe das Attribut hinzugefügt, um mehrere Dateiauswahlen im Datei-Upload-Steuerelement zu ermöglichen, wie hier beschrieben:
https://domino-ideas.hcltechsw.com/ideas/DDXP-I-431
Wenn ich mehr als eine Datei auswähle, gibt das Steuerelement an, dass mehrere Dateien ausgewählt wurden.
Für das Steuerelement habe ich eine benutzerdefinierte Schaltfläche hinzugefügt Ich habe an eine von Java verwaltete Bean-Klasse gebunden:

Code: Select all








 




Hier ist die Speichermethode in der Java-Klasse attachmentBean:

Code: Select all

private UploadedFile uploadedFile;

public void save(String parentId, String type, String fields) {
try {
IUploadedFile iUploadedFile = null;
if (null != uploadedFile) {
iUploadedFile = uploadedFile.getUploadedFile();
}
if (null != iUploadedFile) {
attachmentCrud.save(parentId, type, fields, iUploadedFile);
}
} catch (Exception e) {
//
}
}
Die aufgerufene Speichermethode erledigt das Problem. Anstelle mehrerer Dateien wird jedoch nur eine Datei gespeichert, da ich

Code: Select all

@Override
public void save(String parentId, String type, String fields, IUploadedFile iUploadedFile) {
try {
if (null != iUploadedFile) {
Session sess = Factory.getSession(SessionType.CURRENT);
Database db = sess.getDatabase(null, filePath + fileName);
if (null != db) {
if (db.isOpen()) {
String fieldName = null;
//get the original filename
String tempClientFile = iUploadedFile.getClientFileName();
system.print.outline("# iUploadedFile - getClientFileName: " + iUploadedFile.getClientFileName());
system.print.outline("# iUploadedFile - getServerFileName:  " + iUploadedFile.getServerFileName());
system.print.outline("# iUploadedFile - getContentType:  " + iUploadedFile.getContentType());
system.print.outline("# iUploadedFile - getContentLength:  " + iUploadedFile.getContentLength());

//get the "" file (with a cryptic filename)
File tempFile = iUploadedFile.getServerFile();
Das Problem liegt darin, dass ich das UploadedFile-Objekt weiterleite:
private UploadedFile uploadedFile;
Dies kann meiner Meinung nach nur ein einzelnes Dateiobjekt darstellen. Und ich kann kein Objekt mit mehreren Dateien in seiner darstellenden Klasse finden:
https://public.dhe.ibm.com/software/dw/ ... pload.html
aber dann das v9-Dokumentation und v12-Option für mehrere Dateien sollten hinzugefügt werden, aber ich kann keine aktuelle Dokumentation dazu finden?
Ich kann jedoch Folgendes aufrufen:

Code: Select all

System.out.println("iUploadedFile.getClientFileNames() = " + iUploadedFile.getClientFileNames());
String[] tmpFiles= iUploadedFile.getClientFileNames();
for (String s: tmpFiles) {
//Do your stuff here
System.out.println(s);
}
aber dies druckt nur eine einzelne Datei.
Die UploadedFile-Klasse ermöglicht nur das Abrufen einer einzelnen Datei:

Code: Select all

iUploadedFile = uploadedFile.getUploadedFile();
Weiß jemand, wie ich meinen vorhandenen Code anpassen kann, um das Hochladen mehrerer Dateien zu unterstützen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post