コード例 #1
0
  public ImageUploadContentPanel(String pId, String customUploadFolderPath) {
    super(pId);
    setOutputMarkupId(true);
    this.uploadFolderPath = customUploadFolderPath;
    Form<?> form = new Form<Void>("form");
    final FeedbackPanel feedback = new FeedbackPanel("feedback");
    feedback.setOutputMarkupId(true);
    form.add(feedback);
    final FileUploadField fileUploadField = new FileUploadField("file");
    fileUploadField.setLabel(new ResourceModel("required.label"));
    fileUploadField.setRequired(true);
    fileUploadField.add(FILE_EXTENSION_VALIDATOR);
    form.add(fileUploadField);
    form.add(
        new AjaxButton("uploadButton", form) {
          private static final long serialVersionUID = 1L;

          @Override
          protected void onSubmit(AjaxRequestTarget pTarget, Form<?> pForm) {
            FileUpload fileUpload = fileUploadField.getFileUpload();
            String fileName = fileUpload.getClientFileName();
            try {
              File currentEngineerDir = new File(uploadFolderPath);
              if (!currentEngineerDir.exists()) {
                currentEngineerDir.mkdir();
              }
              fileUpload.writeTo(new File(currentEngineerDir, fileName));
            } catch (Exception ex) {
              log.error("Can't upload attachment: " + ex.getMessage(), ex);
              ImageUploadContentPanel.this.error("Can't upload attachment");
              pTarget.add(feedback);
              return;
            } finally {
              fileUpload.closeStreams();
            }
            ImageFileDescription imageFileDescription = new ImageFileDescription(fileName);
            imageFileDescription.setContentType(fileUpload.getContentType());
            onImageUploaded(imageFileDescription, pTarget);
          }

          @Override
          protected void onError(AjaxRequestTarget pTarget, Form<?> pForm) {
            pTarget.add(feedback);
          }
        });
    add(form);
  }