Пример #1
0
        /// <summary>
        /// 当文件被拖拽进上传框中
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void UploadArea_Drop(object sender, DragEventArgs e)
        {
            // 如果当前有文件正在上传,则阻止当前行为
            if (UploadProgressCollection.Count > 0)
            {
                string msg       = AppTools.GetReswLanguage("WaitToUpload");
                var    tipDialog = new TipDialog(AppTools.GetReswLanguage("DefaultTipTitle"), msg);
                await tipDialog.ShowAsync();

                return;
            }
            // 检测授权码是否存在,如不存在,则要求用户重新输入授权码
            string authKey = AppTools.GetLocalSetting(AppSettings.AuthKey, "");

            if (string.IsNullOrEmpty(authKey))
            {
                var keyDialog = new AuthKeyDialog();
                await keyDialog.ShowAsync();

                return;
            }
            // 检测拖拽的文件
            if (e.DataView.Contains(StandardDataFormats.StorageItems))
            {
                var items = await e.DataView.GetStorageItemsAsync();

                items = items.OfType <StorageFile>().ToList() as IReadOnlyList <IStorageItem>;
                // 对文件进行筛选,只要指定格式的图片
                if (items != null && items.Any())
                {
                    var imgList = new List <StorageFile>();
                    foreach (var item in items)
                    {
                        string path    = item.Path;
                        string extends = Path.GetExtension(item.Path).Substring(1);
                        var    file    = item as StorageFile;
                        if (extends.ToLower() == "jpg" || extends.ToLower() == "png" || extends.ToLower() == "bmp" || extends.ToLower() == "gif" || extends.ToLower() == "jpeg" || extends.ToLower() == "webp")
                        {
                            imgList.Add(file);
                        }
                    }
                    FileUpload(imgList);
                }
            }
        }
Пример #2
0
        private async void FromClipboardMenuItem_Click(object sender, RoutedEventArgs e)
        {
            if (UploadProgressCollection.Count > 0)
            {
                string msg       = AppTools.GetReswLanguage("WaitToUpload");
                var    tipDialog = new TipDialog(AppTools.GetReswLanguage("DefaultTipTitle"), msg);
                await tipDialog.ShowAsync();

                return;
            }
            string authKey = AppTools.GetLocalSetting(AppSettings.AuthKey, "");

            if (string.IsNullOrEmpty(authKey))
            {
                var keyDialog = new AuthKeyDialog();
                await keyDialog.ShowAsync();

                return;
            }
            try
            {
                var data   = Clipboard.GetContent();
                var bitmap = await data.GetBitmapAsync();

                var tempFile = await ApplicationData.Current.LocalFolder.CreateFileAsync(Guid.NewGuid().ToString("N") + ".png", CreationCollisionOption.OpenIfExists);

                using (var stream = await bitmap.OpenReadAsync() as IRandomAccessStream)
                {
                    using (var reader = new DataReader(stream))
                    {
                        await reader.LoadAsync((uint)stream.Size);

                        var buffer = new byte[(int)stream.Size];
                        reader.ReadBytes(buffer);
                        await FileIO.WriteBytesAsync(tempFile, buffer);
                    }
                }
                await FileUpload(new List <StorageFile>() { tempFile }, true);
            }
            catch (Exception)
            {
                throw;
            }
        }
Пример #3
0
        /// <summary>
        /// 点击上传区域,弹出文件选择框
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void UploadArea_Tapped(object sender, TappedRoutedEventArgs e)
        {
            if (UploadProgressCollection.Count > 0)
            {
                string msg       = AppTools.GetReswLanguage("WaitToUpload");
                var    tipDialog = new TipDialog(AppTools.GetReswLanguage("DefaultTipTitle"), msg);
                await tipDialog.ShowAsync();

                return;
            }
            string authKey = AppTools.GetLocalSetting(AppSettings.AuthKey, "");

            if (string.IsNullOrEmpty(authKey))
            {
                var keyDialog = new AuthKeyDialog();
                await keyDialog.ShowAsync();

                return;
            }
            var picker = new FileOpenPicker();

            picker.SuggestedStartLocation = PickerLocationId.Desktop;
            picker.ViewMode = PickerViewMode.Thumbnail;
            picker.FileTypeFilter.Add(".jpg");
            picker.FileTypeFilter.Add(".jpeg");
            picker.FileTypeFilter.Add(".png");
            picker.FileTypeFilter.Add(".bmp");
            picker.FileTypeFilter.Add(".gif");
            picker.FileTypeFilter.Add(".webp");
            var files = await picker.PickMultipleFilesAsync();

            if (files != null && files.Any())
            {
                var imgList = new List <StorageFile>();
                foreach (var item in files)
                {
                    var file = item as StorageFile;
                    imgList.Add(file);
                }
                FileUpload(imgList);
            }
        }
Пример #4
0
        private async void LinkButton_Click(object sender, RoutedEventArgs e)
        {
            var tip = new HoldMaskTip(AppTools.GetReswLanguage("WaittingTip"));

            tip.Show();
            // 开始走OneDrive登录流程
            bool isAuth = await App.OneDriveTools.OneDriveAuthorize();

            // 如果用户成功登录并同意授权
            if (isAuth)
            {
                AppTools.WriteLocalSetting(AppSettings.IsOneDriveAuthorized, "True");
                // 检查用户云端内是否有图片存储
                bool hasCloudMeta = await App.OneDriveTools.EnsureCloudMetaExist();

                if (hasCloudMeta)
                {
                    // 有的话进行同步
                    await App.OneDriveTools.ReplaceDatabase();

                    App.Db = await App.OneDriveTools.GetImgMetaList();

                    using (App.Db)
                    {
                        if (App.Db.Images.Count() > 0)
                        {
                            string url          = App.Db.Images.First().URL;
                            int    authKeyIndex = url.IndexOf("key=");
                            string authkey      = url.Substring(authKeyIndex + 4);
                            AppTools.WriteLocalSetting(AppSettings.AuthKey, authkey);
                        }
                    }
                }
                else
                {
                    // 没有就在应用文件夹里建一个
                    await App.OneDriveTools.DatabaseInit();
                }
                tip.Close();

                // 要求用户输入授权码
                string ak = AppTools.GetLocalSetting(AppSettings.AuthKey, "");
                if (string.IsNullOrEmpty(ak))
                {
                    // 弹出授权码输入框
                    bool isCancel   = false;
                    var  authDialog = new AuthKeyDialog();
                    authDialog.PrimaryButtonClick += (_s, _e) =>
                    {
                        _e.Cancel = true;
                        authDialog.IsPrimaryButtonEnabled = false;
                        string key = authDialog.AuthKeyBox.Text.Trim();
                        if (string.IsNullOrEmpty(key))
                        {
                            var msg = AppTools.GetReswLanguage("AuthKeyEmpty");
                            new PopupMaskTip(msg).Show();
                        }
                        else
                        {
                            AppTools.WriteLocalSetting(AppSettings.AuthKey, key);
                            authDialog.Hide();
                        }
                        authDialog.IsPrimaryButtonEnabled = true;
                    };
                    authDialog.CloseButtonClick += (_s, _e) =>
                    {
                        isCancel = true;
                        AppTools.WriteLocalSetting(AppSettings.AuthKey, "");
                    };
                    await authDialog.ShowAsync();

                    if (!isCancel)
                    {
                        var tipDialog = new TipDialog(AppTools.GetReswLanguage("DefaultTipTitle"), AppTools.GetReswLanguage("AuthorizeSuccess"));
                        await tipDialog.ShowAsync();
                    }
                    else
                    {
                        var tipDialog = new TipDialog(AppTools.GetReswLanguage("DefaultTipTitle"), AppTools.GetReswLanguage("AuthorizeCancel"));
                        await tipDialog.ShowAsync();
                    }
                }
                // 跳转至首页
                Frame rootFrame = Window.Current.Content as Frame;
                AppTools.WriteLocalSetting(AppSettings.IsFirstRun, "False");
                rootFrame.Navigate(typeof(MainPage));
            }
            else
            {
                tip.Close();
                string title   = AppTools.GetReswLanguage("AuthErrorTitle");
                string content = AppTools.GetReswLanguage("AuthErrorContent");
                var    dialog  = new TipDialog(title, content);
                await dialog.ShowAsync();
            }
        }