ICEfaces
  1. ICEfaces
  2. ICE-3042

Catch-all task to make inputFile work in synchronous mode

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.7
    • Fix Version/s: 1.7.1
    • Component/s: ICE-Components
    • Labels:
      None
    • Environment:
      All

      Description

      The inputFile component currently requires asynchronous mode to be able to depict file upload progress, and file upload completion. The actual file uploading process itself does not require asynchronous mode. Customers want it to work properly in synchronous mode as well, so I've compiled a list of options to allow for that, as a starting point for our discussion today.

      A. ICE-2102 Most people who choose to stick with synchronous mode, do so for scalability reasons, since they can't support a blocking connection for every user, all the time. If we allow for granular [a]synchronosity, that switches from sync to async only as needed, like while a file upload component is currently being displayed, or currently uploading, then that might be sufficiently scalable.

      B. ICE-2860 When a file is being uploaded, it currently is via a POST within an IFRAME. That means that the upload request will result in a response, being rendered right back to that IFRAME. Right now that's just the Javascript to do a document.write(), to generate the proper DOM structure for the IFRAME contents to allow for the next upload. But, we might be able to render Javascript, or set a cookie, or something that would, even with https, be able to tell the whole view to request the updated DOM from the server.

      C. This would be a variant of option B, where instead of updating the whole view, we would just have the file upload completion UI, and maybe even the file upload progress UI right in that IFRAME, so that the UploadServer's response would be sufficient. That would be different from the current method of using an ice:outputProgress component, with bean glue code.

      D. ICE-2224 When in synchronous mode, don't even render the inputFile within an IFRAME, but just render it right into the existing page. That would mean that the inputFile would have to be in a form. And there's the unknowns surrounding doing the upload post, since we don't know if that would do a regular HTTP POST or an Ajax POST, so would that break ICEfaces or not? Also, this would only allow for a file upload completion update, not progress updates. And the rest of the user interface would be unresponsive while the upload was happening.

        Issue Links

          Activity

          Hide
          Mark Collette added a comment -

          No, it was option B. I'm not exactly sure why I put the meeting summary there (ICE-2869), instead of here.

          Show
          Mark Collette added a comment - No, it was option B. I'm not exactly sure why I put the meeting summary there ( ICE-2869 ), instead of here.
          Hide
          Mark Collette added a comment -
          Show
          Mark Collette added a comment - ICE-2860
          Hide
          Mircea Toma added a comment -

          I finished inserting the Javascript callbacks that trigger a form submit at the beginning and at the end of the upload. The check-ins were made for ICE-2860.

          Show
          Mircea Toma added a comment - I finished inserting the Javascript callbacks that trigger a form submit at the beginning and at the end of the upload. The check-ins were made for ICE-2860 .
          Hide
          Mark Collette added a comment -

          This is done, since ICE-2860 is done.

          Show
          Mark Collette added a comment - This is done, since ICE-2860 is done.

            People

            • Assignee:
              Unassigned
              Reporter:
              Mark Collette
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: