3

私はJDeveloperを使用しています。ADF Fusion Web アプリケーション内には、入力ファイル コントロールと、Bean メソッドを呼び出してファイルを UCM にアップロードする送信ボタンがあります。私のファイルが私のマシンにある場合、たとえば「/home/user/myfile.txt」としましょう。これは魅力的に機能します。入力ファイルを使用しようとしている場合、最初にこのファイルをディスクに保存してからこのファイルをアップロードしない限り、ファイルを UCM にアップロードする方法がどこにもありません。私の意見では、このやり方はお勧めできません。

サーバーワークステーションからのファイルをアップロードできるこれまでのコードは次のとおりです。

// RETRIEVE THE DESTINATION PATH
DataBinder binder = idcClient.createBinder();
binder.putLocal("IdcService", "COLLECTION_INFO");
binder.putLocal("hasCollectionPath", "true");
binder.putLocal("dCollectionPath", "/Contribution Folders/PDD"); // The path you are looking for
DataBinder searchFolder = idcClient.sendRequest(idcContext, binder).getResponseAsBinder();

binder = idcClient.createBinder();
binder.putLocal ("IdcService", "CHECKIN_NEW");
binder.putLocal ("dDocAuthor", "weblogic");
binder.putLocal ("dDocTitle", "myimage2.jpg");
binder.putLocal ("dDocName", "myimage2.jpg");
binder.putLocal ("dDocType", "Document");
binder.putLocal("xCollectionID", searchFolder.getLocal("dCollectionID"));
binder.putLocal ("dSecurityGroup", "Public");
binder.putLocal ("dDocAccount:", "");
binder.putLocal ("xComments", "My comment");
binder.addFile ("primaryFile", new File("/home/oracle/myimage.jpg"));

// check in the file
ServiceResponse response = idcClient.sendRequest (idcContext, binder);

何か提案があれば、よろしくお願いします。みんなありがとう!


解決策は次のとおりです。

        UploadedFile uf = (UploadedFile) inputFile1.getValue();

        DataBinder binder = idcClient.createBinder();
        binder.putLocal ("IdcService", "CHECKIN_NEW");
        binder.putLocal ("dDocAuthor", "weblogic"); // if user is admin, can specify other user
        binder.putLocal ("dDocTitle", uf.getFilename());
        binder.putLocal ("dDocName", uf.getFilename());
        binder.putLocal ("dDocType", "DigitalMedia");
        binder.putLocal("xCollectionID", getFolderCollectionId("/Contribution Folders/PDD")); // parent's folder
        binder.putLocal ("dSecurityGroup", "Public");
        binder.putLocal ("dDocAccount:", "");
        binder.putLocal ("xComments", "Montreal comment");
        binder.putLocal ("xWCTags", "Montreal");

        binder.addFile ("primaryFile", new TransferFile(uf.getInputStream(), uf.getFilename(), getByteLenght(uf.getInputStream())));

        ServiceResponse response = idcClient.sendRequest (idcContext, binder);
4

1 に答える 1

2

あなたはすでに自分で解決策を見つけているので、ここで使用する必要がある便利な UploadFile メソッドが他にもあることに言及したいと思います。

getFilename(); //you've got this
getLength(); //instead of getting byte length from stream
getContentType(); //available MIME

getFolderCollectionId("/Contribution Folders/PDD"))意図したとおりに動作していますか?

また、ファイルはサイズが 100KB 未満の場合にのみメモリに保存され、それ以上の場合はディスクに書き込まれることに注意してください。各リクエストの上限は 2000KB です。これらはデフォルト値であり、サーブレット コンテキストの初期化パラメータで変更できます。

<context-param>
    <!-- Maximum memory per request (in bytes) -->
    <param-name>oracle.adf.view.faces.UPLOAD_MAX_MEMORY</param-name>
    <param-value>512000</param-value>
</context-param>
<context-param>
    <!-- Maximum disk space per request (in bytes) -->
    <param-name>oracle.adf.view.faces.UPLOAD_MAX_DISK_SPACE</param-name>
    <param-value>5120000</param-value>
</context-param>
<context-param>
    <!-- directory to store temporary files -->
    <param-name>oracle.adf.view.faces.UPLOAD_TEMP_DIR</param-name>
    <param-value>/tmp/ADFUploads/</param-value>
</context-param>

<!-- This filter is always required by ADF;  one of its functions is file upload. -->
<filter>
    <filter-name>adfFaces</filter-name>
    <filter-class>oracle.adf.view.faces.webapp.AdfFacesFilter</filter-class>
</filter>
于 2013-11-01T17:09:13.027 に答える