Project

General

Profile

Actions

Bug #6133

closed

WFileUpload broken in Wt 4.0.x

Added by Cristian Ciocaltea over 6 years ago. Updated over 6 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
11/14/2017
Due date:
% Done:

0%

Estimated time:

Description

Hi,

I'm struggling to find out why the WFileUpload widget is not working any more as it did when using Wt 3.x.

After choosing a file, the changed() handler is invoked, but after calling upload() nothing happens, the uploaded() handler is never called.

Bellow is an extras with the relevant code. Do I miss something?

Thank you in advance,

Cristi

    upload_ = addWidget(std::make_unique<WFileUpload>());
    upload_->setFileTextSize(20);

    auto progress = std::make_unique<WProgressBar>();
    progress->setVerticalAlignment(AlignmentFlag::Middle);
    upload_->setProgressBar(std::move(progress));

    // Upload automatically when the user entered a file
    upload_->changed().connect([=]() {
        upload_->upload();
    });

    // React to a successful upload
    upload_->uploaded().connect([=]() {
        if (upload_->empty()) {
            uploadFailed_ = true;
            // log error

        } else {
            uploadFailed_ = false;
            uploadedFileName_ = upload_->spoolFileName();
            // log success
        }

        // Signal that a new asynchronous file upload was processed
        uploadDone_.emit();
    });
Actions #1

Updated by Cristian Ciocaltea over 6 years ago

Would it be possible to increase the priority for this issue? I forgot to do it before submitting and the fields are not editable any more. Thanks!

Actions #2

Updated by Roel Standaert over 6 years ago

I'm not sure why this is not working for you, since it is working in the widget gallery.

Actions #3

Updated by Cristian Ciocaltea over 6 years ago

Which Wt version are you testing against?

I've tried with both 4.0.0 and 4.0.1-rc1, using Chrome/Firefox on Linux Mint 18.2.

Enabling debugging in wt_config.xml doesn't help either, there is no relevant message in the log.

Additionally, there are no JavaScript related messages in the browser console.

Is there anything else I could check?

Actions #4

Updated by Cristian Ciocaltea over 6 years ago

Ok, I did some more investigations and I found an indication of the problem:

WFileUpload: Resource handleRequest(): no signal

I added some more debugging info in handleRequest method of WFileUploadResource class and it seems the triggerUpdate flag is never set because the following evaluates to false:

if (!files.empty() || request.getParameter("data"))

So, for some reason, the request object doesn't contain the required data. Any ideas why?

Actions #5

Updated by Roel Standaert over 6 years ago

  • Status changed from New to Feedback

I'm not sure what's going wrong on your side, I tested a small sample application too (with the latest master and 4.0.1 RC1) and it is working for me.

You are sure that the file you are uploading does not exceed the limit?

Could you maybe create a HAR file? See Issue Tracker Guidelines.

Actions #6

Updated by Cristian Ciocaltea over 6 years ago

The limit was not exceeded, I tested with various files (some of them being only a few bytes in size).

To make sure it's not browser related, I've also tested with Firefox/Chrome/IE on Windows and I got the same behaviour. So it is definitely something wrong on the server side.

The wt library and the application are cross-built with gcc-4.9.2 for 32-bit architecture, but the same environment was perfectly functional with wt-3.3.4.

Could you please tell me what was the environment you have been testing on? Maybe there is a bug or something in the compiler related to the C++11 features used by wt4.

I'm going to create a simple application and test it against a newer compiler (5.4.0).

Actions #7

Updated by Roel Standaert over 6 years ago

Our main testing and development systems (and webtoolkit.eu) run Ubuntu 16.04, with GCC 5.4.0.

Actions #8

Updated by Cristian Ciocaltea over 6 years ago

The problem is indeed related to the compiler version: I built Wt examples with GCC 4.9.2 and tested with the composer example - same issue exposed. Then I built Wt with GCC 5.4.0 and the composer example works fine.

It seems I'm now forced to upgrade my toolchain to a newer version - I'm going to give GCC 6.x a try and come back to you with the results.

Actions #9

Updated by Cristian Ciocaltea over 6 years ago

I updated my cross compiler to GCC 6.3.0 and rebuilt the application without doing any other changes at the source code level. The file upload is working fine now.

The conclusion is that WFileUpload might be broken in Wt 4.0.x when using a GCC compiler older than 5.x. At least this is the case for GCC 4.9.2.

Actions #10

Updated by Roel Standaert over 6 years ago

  • Status changed from Feedback to Closed

As this appears to be an issue with older versions of GCC, but not with GCC 5 or higher, I'm going to close this.

Actions

Also available in: Atom PDF