Craft 3: Upload user photo from front end How do I allow logged in users to change their user photo on the front end in Craft 3? 

I am creating an "Edit Profile" page and I followed the answer to this question for Craft 2 to create a form updating to Craft 3 syntax where necessary (code below). When I submit the form, the text/textarea fields get updated, but the image does not. Can anyone point me in the direction as to how to get this working?

Thanks in advance!

      &lt;form method="post" enctype="multipart/form-data"&gt;
        {{ csrfInput() }}

        &lt;input type="hidden" name="action" value="users/save-user"&gt;
        {{ redirectInput('users') }}

        {% macro errorList(errors) %}
        {% if errors %}
            &lt;ul class="errors"&gt;
                {% for error in errors %}
                    &lt;li&gt;{{ error }}&lt;/li&gt;
                {% endfor %}
            &lt;/ul&gt;
        {% endif %}
        {% endmacro %}

        {% from _self import errorList %}

        &lt;input type="hidden" name="userId" value="{{ currentUser.id }}"&gt;

        {% if currentUser.getPhoto != '' %}
            &lt;img src="{{ currentUser.getPhoto.getUrl }}" alt=""&gt;&lt;br&gt;
        {% endif %}
        &lt;input type="file" id="userPhoto" name="userPhoto" value="Upload"&gt;

        &lt;label for="firstName"&gt;First Name&lt;/label&gt;
        &lt;input id="firstName" name="firstName" value="{{ currentUser.firstName }}"&gt;&lt;br&gt;

        &lt;label for="lastName"&gt;Last Name&lt;/label&gt;
        &lt;input id="lastName" name="lastName" value="{{ currentUser.lastName }}"&gt;&lt;br&gt;

        &lt;label for="bio"&gt;Bio&lt;/label&gt;
        &lt;textarea id="bio" name="fields[bio]"&gt;{{ currentUser.bio }}&lt;/textarea&gt;

        &lt;label for="password"&gt;Password&lt;/label&gt;
        &lt;input id="password" type="password" name="password"&gt;&lt;br&gt;

        {% if account is defined %}
            {{ errorList(account.getErrors('password')) }}
        {% endif %}

        &lt;input type="submit" value="Save Profile"&gt;
    &lt;/form&gt;
The field name used for the user photo has changed to photo, so the bare minimum change to make this work is modifying
&lt;input type="file" id="userPhoto" name="userPhoto" value="Upload"&gt;
to be
&lt;input type="file" id="userPhoto" name="photo" value="Upload"&gt;

You'll probably want to use transforms, when outputting that image, too.

Also, I'd stick with currentUser.photo or currentUser.getPhoto(), instead of using a hybrid currentPhoto.getPhoto, but that might just be me.