【NopCommerce 3.1】asp.net mvc 利用jQuery from.js上传用户头像

纯代码不解释。

在CusotmerControllers中添加上传方法

/// <summary>
        /// ajax上传用户头像
        /// </summary>
        /// <param name="uploadedFile"></param>
        /// <returns></returns>
        [HttpPost]
        public string AjaxUploadAvatar(HttpPostedFileBase uploadedFile)
        {
            string message = string.Empty;
            var customer = _workContext.CurrentCustomer;
            try
            {
                var customerAvatar = _pictureService.GetPictureById(customer.GetAttribute<int>(SystemCustomerAttributeNames.AvatarPictureId));
                if ((uploadedFile != null) && (!String.IsNullOrEmpty(uploadedFile.FileName)))
                {
                    int avatarMaxSize = _customerSettings.AvatarMaximumSizeBytes;
                    if (uploadedFile.ContentLength > avatarMaxSize)
                    {
                        message = string.Format(_localizationService.GetResource("Account.Avatar.MaximumUploadedFileSize"), avatarMaxSize);

                        return message;
                    }

                    byte[] customerPictureBinary = uploadedFile.GetPictureBits();
                    if (customerAvatar != null)
                        customerAvatar = _pictureService.UpdatePicture(customerAvatar.Id, customerPictureBinary, uploadedFile.ContentType, null, true);
                    else
                        customerAvatar = _pictureService.InsertPicture(customerPictureBinary, uploadedFile.ContentType, null, true);
                }

                int customerAvatarId = 0;
                if (customerAvatar != null)
                    customerAvatarId = customerAvatar.Id;

                _genericAttributeService.SaveAttribute(customer, SystemCustomerAttributeNames.AvatarPictureId, customerAvatarId);
                message = _pictureService.GetPictureUrl(
                        customer.GetAttribute<int>(SystemCustomerAttributeNames.AvatarPictureId),
                        _mediaSettings.AvatarPictureSize,
                        false);
                return "1|" + message;

            }
            catch (Exception exc)
            {
                message = exc.Message;
                return message;
            }
        }

View代码:Avatar.cshtml

<script src="http://malsup.github.com/jquery.form.js" type="text/javascript"></script>
@using (Html.BeginForm("AjaxUploadAvatar", "Customer", FormMethod.Post, new { enctype = "multipart/form-data", id = "formUploadImg" }))
{
    <div class="theme-popover-mask"></div>
    <div class="theme-popover">
        <div class="message-error">
            @Html.ValidationSummary(true)
        </div>
        <div class="theme-poptit">
            <a href="javascript:;" title="关闭" class="close">×</a>
            <h3>修改您的头像</h3>
        </div>
        <div class="theme-popbod dform">
            <div class="upload_left">
                @if (!String.IsNullOrEmpty(Model.AvatarUrl))
                {
                    <img src="@(Model.AvatarUrl)" alt="avatar" />
                }<p>当前头像</p>
            </div>
            <div class="upload_right">
                <h3>请选择您电脑上的图片:</h3>
                <input name="uploadedFile" id="uploadedFile" type="file" />
                <input type="submit" id="btnUploadImg" name="upload-avatar" class="button-1 upload-avatar-button" value="@T("Common.Upload")" />
                @if (!String.IsNullOrEmpty(Model.AvatarUrl))
                {
                    <input type="submit" name="remove-avatar" class="button-2 remove-avatar-button" value="@T("Account.Avatar.RemoveAvatar")" />
                }
                <div id="progress" style="display: none">
                    <div id="bar">图片正在上传请稍等.....</div>
                </div>
                <br />
                <div id="message"></div>
                <input type="hidden" value="0" id="hidIsUpLoadimg" />
                <p>@T("Account.Avatar.UploadRules")</p>
            </div>
        </div>
    </div>
}
<script type="text/javascript">
    $(document).ready(function ($) {
        $('.user_infor img').click(function () {
            popupCon();
        });
        $('.theme-poptit .close').click(function () {
            popupBtn();
        });

        $(document).ready(function () {
            var options = {
                beforeSend: function () {
                    $("#progress").show();
                },
                success: function () {
                    $("#progress").hide();
                },
                complete: function (response) {
                    if (response.responseText.split('|')[0] == "1") {
                        $("#hidIsUpLoadimg").val(response.responseText);
                        $("#message").html("<font color='green'>图片上传成功,请刷新当前页面.</font>");
                    }
                },
                error: function () {
                    $("#message").html("<font color='red'>上传图片出错,请重新上传!</font>");
                }
            };
            $("#formUploadImg").ajaxForm(options);
        });
    });
</script>

其它的不多说了。在用NopCommerce的欢迎加群讨论。

 

posted @ 2014-03-27 10:19  PandaIT  阅读(965)  评论(1编辑  收藏  举报