首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用gwtupload上传文件

如何使用gwtupload上传文件
EN

Stack Overflow用户
提问于 2013-02-26 19:29:06
回答 4查看 4.9K关注 0票数 0

我正试着在GWT上传一个文件,我被困了2天了。

现在我正在尝试一些教程,所以这是我的代码

我的下面的代码从来没有到服务器端,任何想法..

或者如果有人能为我提供一些工作代码..

这是我客户端的代码

代码语言:javascript
复制
   public class UploadDb extends Composite{

      private FlowPanel panelImages = new FlowPanel();


      public UploadDb() {
       initWidget(panelImages);

        // Create a new multiuploader and attach it to the document
        MultiUploader defaultUploader = new MultiUploader(FileInputType.LABEL);
        panelImages.add(defaultUploader);
        defaultUploader.setEnabled(true);

        // Add a finish handler which will load the image once the upload finishes
        defaultUploader.addOnFinishUploadHandler(onFinishUploaderHandler);
      }

      // Load the image in the document and in the case of success attach it to the viewer
      private IUploader.OnFinishUploaderHandler onFinishUploaderHandler = new IUploader.OnFinishUploaderHandler() {
        public void onFinish(IUploader uploader) {
          if (uploader.getStatus() == Status.SUCCESS) {

            new PreloadedImage(uploader.fileUrl(), showImage);
        System.out.println("Server message " + uploader.fileUrl());
          }
        }
      };

      // Attach an image to the pictures viewer
      private OnLoadPreloadedImageHandler showImage = new OnLoadPreloadedImageHandler() {
        public void onLoad(PreloadedImage image) {
          image.setWidth("75px");
          panelImages.add(image);
        }
      };


    }

在我的服务器端

代码语言:javascript
复制
               public class DashBoardUploadServlet  extends UploadAction {

      private static final long serialVersionUID = 1L;

      Hashtable<String, String> receivedContentTypes = new Hashtable<String, String>();
      /**
       * Maintain a list with received files and their content types. 
       */
      Hashtable<String, File> receivedFiles = new Hashtable<String, File>();

      /**
       * Override executeAction to save the received files in a custom place
       * and delete this items from session.  
       */
      @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 {
              /// Create a new file based on the remote file name in the client
              // String saveName = item.getName().replaceAll("[\\\\/><\\|\\s\"'{}()\\[\\]]+", "_");
              // File file =new File("/tmp/" + saveName);

              /// Create a temporary file placed in /tmp (only works in unix)
              // File file = File.createTempFile("upload-", ".bin", new File("/tmp"));

              /// Create a temporary file placed in the default system temp folder
              File file = File.createTempFile("upload-", ".bin");
              item.write(file);

              /// Save a list with the received files
              receivedFiles.put(item.getFieldName(), file);
              receivedContentTypes.put(item.getFieldName(), item.getContentType());

              /// Send a customized message to the client.
              response += "File saved as " + file.getAbsolutePath();

            } catch (Exception e) {
              throw new UploadActionException(e.getMessage());
            }
          }}
      /// Remove files from session because we have a copy of them
        removeSessionFileItems(request);

        /// Send your customized message to the client.
        return response;
      }

web.xml

代码语言:javascript
复制
                <servlet>
<servlet-name>UploadServlet</servlet-name>
<servlet-class>com.dashboard.server.DashBoardUploadServlet</servlet-class>
  </servlet>

  <servlet-mapping>
   <servlet-name>UploadServlet</servlet-name>
   <url-pattern>/Upload</url-pattern>
   </servlet-mapping>
EN

回答 4

Stack Overflow用户

发布于 2013-02-27 09:42:10

web.xml中的servlet-mapping不正确。您必须将其更改为:

代码语言:javascript
复制
<servlet-mapping>
  <servlet-name>UploadServlet</servlet-name>
  <url-pattern>*.gupld</url-pattern>
</servlet-mapping>

如果使用firebug或chrome dev-tools检查浏览器-服务器对话框,应该会看到404 HTTP errors

票数 1
EN

Stack Overflow用户

发布于 2013-02-27 12:47:40

在客户端尝试此代码。

代码语言:javascript
复制
  public void onModuleLoad() {

    final FormPanel form = new FormPanel();
    form.setAction("/myFormHandler");

    form.setEncoding(FormPanel.ENCODING_MULTIPART);
    form.setMethod(FormPanel.METHOD_POST);
    VerticalPanel panel = new VerticalPanel();
    form.setWidget(panel);

    FileUpload upload = new FileUpload();
    upload.setName("uploadFormElement");
    panel.add(upload);

    // Add a 'submit' button.
    panel.add(new Button("Submit", new ClickListener() {
      public void onClick(Widget sender) {
        form.submit();
      }
    }));




    RootPanel.get().add(form);
  }

点击此链接 file upload

票数 0
EN

Stack Overflow用户

发布于 2014-04-06 01:41:59

只需添加您的主机路径

String page=GWT.getModuleBaseURL()+"upload";和你的

servlet调用路径defaultUploader.setServletPath(页面);它可以完美地工作。如果您还想将文件上传到本地文件夹,而不是添加servlet上具有foldername驱动器路径..

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15087979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档