예제 #1
0
        /// <summary>
        /// 上传图片
        /// </summary>
        /// <param name="url"></param>
        /// <param name="file"></param>
        /// <returns></returns>
        private async Task <ModifyAvatarResult> UploadImage(string url, StorageFile file)
        {
            try
            {
                using (var client = new HttpClient())
                {
                    client.DefaultRequestHeaders.Add("Authorization", "Bearer " + DataShareManager.Current.User.AccessToken);
                    client.DefaultRequestHeaders.Add("Connection", "Keep-Alive");
                    client.DefaultRequestHeaders.Add("User-Agent", "(Linux; Android 5.0.2; vivo X5M Build/vivo/PD1401CL/PD1401CL/LRX22G/zh_CN)");

                    using (var content = new MultipartFormDataContent("TLq-mXb4y62pbCa_bPiNZXitxUS3RV29c8"))
                    {
                        var imageContent = new StreamContent(await file.OpenStreamForReadAsync());

                        string boundary = Guid.NewGuid().ToString();

                        content.Headers.Add("ContentType", "multipart/form-data; boundary=TLq-mXb4y62pbCa_bPiNZXitxUS3RV29c8");

                        if (file.Name.EndsWith(".jpg"))
                        {
                            content.Add(imageContent, "avatar", "avatar.jpg");
                            content.Headers.TryAddWithoutValidation("ContentType", "jpg:image/jpg");
                        }
                        else if (file.Name.EndsWith(".png"))
                        {
                            content.Add(imageContent, "avatar", "avatar.png");
                            content.Headers.TryAddWithoutValidation("ContentType", "png:image/png");
                        }

                        content.Headers.ContentDisposition = ContentDispositionHeaderValue.Parse("form-data; name='avatar'; filename='" + file.Name + "'");

                        var result = await client.PostAsync(new Uri(url), content);

                        var resContent = await result.Content.ReadAsByteArrayAsync();

                        string             json         = Encoding.UTF8.GetString(resContent);
                        ModifyAvatarResult avatarResult = JsonHelper.Deserlialize <ModifyAvatarResult>(json);
                        return(avatarResult);
                    }
                }
            }
            catch (Exception e)
            {
                LogHelper.WriteLine(e);
                return(null);
            }
        }
예제 #2
0
        /// <summary>
        /// 修改头像
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public async void ModifyAvatar(object sender, TappedRoutedEventArgs e)
        {
            FileOpenPicker picker = new FileOpenPicker();

            picker.FileTypeFilter.Add(".jpg");
            picker.FileTypeFilter.Add(".png");
            picker.FileTypeFilter.Add(".bmp");
            StorageFile file = await picker.PickSingleFileAsync();

            if (file != null)
            {
                ModifyAvatarResult result = await UploadImage(ServiceUri.UploadAvatar, file);

                if (result != null)
                {
                    User.Avatar = result.Avatar;
                    ToastService.SendToast("头像更新成功");
                }
            }
        }