0

GWTUpload を使用してファイルをアップロードしています。サーバー情報、ファイル名、コンテンツ タイプなどを onFinishHandler で取得していますが、サーバーからクライアントにファイル コンテンツを取得するオプションはありません。

注:XMLファイルとEXCELファイルをアップロードしようとしています

GWT 2.4、GXT 3.0.1、GWTUpload 0.6.6 を使用しています

ここにサンプルコードがあります

クライアント コード - OnFinishHandler

u.addOnFinishUploadHandler(new OnFinishUploaderHandler() {
            @Override
            public void onFinish(IUploader uploader) {
                if (uploader.getStatus() == Status.SUCCESS) {

                    System.err.println(uploader.getServerResponse());

                    UploadedInfo info = uploader.getServerInfo();
                    System.out.println("File name " + info.name);
                    System.out.println("File content-type " + info.ctype);
                    System.out.println("File size " + info.size);

                    System.out.println("Server message " + info.message);
                }
            }
        });

サーブレット コード

public class GWTFileUploadServlet extends UploadAction {
    private static final long serialVersionUID = -6742854283091447922L;

    String fileContent;
    File uploadedFile;

    @Override
    public String executeAction(HttpServletRequest request,
            List<FileItem> sessionFiles) throws UploadActionException {
        String response = "";
        int cont = 0;
        for (FileItem item : sessionFiles) {
            if (false == item.isFormField()) {
                cont++;
                try {
                    File file = File.createTempFile("upload-", ".bin");
                    item.write(file);

                                        uploadedFile = file;
                    fileContent = item.getContentType();


                    response += "File saved as " + file.getAbsolutePath();

                } catch (Exception e) {
                    throw new UploadActionException(e.getMessage());
                }
            }
        }

        removeSessionFileItems(request);

        return response;
    }

    @Override
    public void getUploadedFile(HttpServletRequest request,
            HttpServletResponse response) throws IOException {
        if (fileContent != null && !fileContent.isEmpty()) {
            response.setContentType(fileContent);
            FileInputStream is = new FileInputStream(uploadedFile);
            copyFromInputStreamToOutputStream(is, response.getOutputStream());
        } else {
            renderXmlResponse(request, response, XML_ERROR_ITEM_NOT_FOUND);
        }
    }

}

私を助けてください....

4

2 に答える 2

1

を呼び出したときにファイルシステムで作成したファイルを読み取ることができますが、受け取ったから を取得し、その内容を任意の場所に書き込むitem.write(...)方がよいでしょう。たとえば、コンテンツが a の場合、 aを使用して取得できます。InputStreamFileItemStringStringWritter

      InputStream inputStream = item.getInputStream();

      StringWriter writer = new StringWriter();
      IOUtils.copy(inputStream, writer);
      String theContentString = writer.toString();

[編集]

クライアント側でファイルのコンテンツを取得するには、任意の方法を使用してサーバーからコンテンツを取得する必要があります。

  • ファイルの内容が ascii の場合、gwtupload サーブレットのカスタマイズされたメッセージとして: return String of を使用しますexecuteAction

  • RequestBuilderアップローダーの URL 値を使用して、サーブレットを呼び出してファイルを取得します。

  • RPC などの任意の GWT ajax メカニズムを使用します。

最新のブラウザでは、サーバー側に送信せずにクライアント側でファイルのコンテンツを取得できます。lib-gwt-fileを見てください

于 2013-08-20T18:36:40.717 に答える
0

あなたのコードであなたはただ使うことができます

バイト[]ファイル; ファイル = item.get();

そして、「file」変数ですべてのファイルコンテンツをエンコードされた形式で取得します。

于 2013-08-20T19:24:59.293 に答える