UWP 判断程序是否为第一次运行

 0x00.添加引用

using System;
using System.Collections.Generic;
using System.Linq;
using Windows.Storage;

0x01.通过判断本地设置文件中是否存在对应项来判断是否为第一次运行

public static bool IsFirstlyRun()
{
    ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
    if (localSettings.Values["BackgroundSource"] == null)
        return true;
    else
        return false;
}

 

C# Gzip解压

0x00.添加引用

using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

0x01.解压

    public static string GZipDecompress(Stream stream)
    {
        byte[] buffer = new byte[100];
        int length = 0;

        GZipStream gzs = new GZipStream(stream, CompressionMode.Decompress);
        MemoryStream ms = new MemoryStream();

        while ((length = gzs.Read(buffer, 0, buffer.Length)) != 0)
        {
            ms.Write(buffer, 0, length);
        }
        return Encoding.UTF8.GetString(ms.ToArray());
    }
}

 

C# 模拟POST上传图片至服务器

0x00.添加引用

using System;
using System.IO;
using System.Net.Http.Headers;
using System.ComponentModel;
using System.Collections.Generic;
using System.Threading.Tasks;
using Windows.UI.Xaml.Media.Imaging;

 


0x01.选择文件

        List<UploadImageInfo> imginfo = new List<UploadImageInfo>();
        private async void SelectFiles_Click(object sender, RoutedEventArgs e)
        {          
            FileOpenPicker openPicker = new FileOpenPicker();
            openPicker.ViewMode = PickerViewMode.Thumbnail;
            openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
            openPicker.FileTypeFilter.Add(".jpg");
            openPicker.FileTypeFilter.Add(".jpeg");
            openPicker.FileTypeFilter.Add(".png");

            var files = await openPicker.PickMultipleFilesAsync();//选择多个文件

            foreach (StorageFile sf in files)
            {
                tokenInfo = await TokenInfo.GetTokenAsync();//自定义获取token函数
                UploadImageInfo uploadImages = new UploadImageInfo();//自定义图片类
                BitmapImage bitmap = new BitmapImage();
                using (var stream = await sf.OpenAsync(FileAccessMode.ReadWrite))
                {
                    bitmap.SetSource(stream);
                    if (stream.Size < 1024 * 1024)
                    {
                        uploadImages.DataSize = Math.Round((double)stream.Size / 1024, 2).ToString ()+"  Kb";
                    }
                    else
                    {
                        uploadImages.DataSize = Math.Round((double)stream.Size / 1024 / 1024, 2).ToString()+"  Mb";
                    }
                    Stream s = WindowsRuntimeStreamExtensions.AsStreamForRead(stream.GetInputStreamAt(0));
                    uploadImages.ContentByte = ConvertStreamTobyte(s);
                    s.Close();//务必结束,否则文件会一直被占用。
                }

                uploadImages.Content = bitmap;
                uploadImages.Name = sf.Name;
                uploadImages.DateCreated = sf.DateCreated.ToString();
                uploadImages.Cameras = cameras;
                uploadImages.Lens = lens;
                imginfo.Add(uploadImages);
}

0x02.异步上传

public static async Task<string> UploadFilesAsync(UploadImageInfo uploadImageInfo, string uzrtoken, string uploadtoken, string userId, string campaignId)
{
   HttpClientHandler handler = new HttpClientHandler();
   HttpClient httpClient = new HttpClient(Sign.HttpClientHandler);
   httpClient.DefaultRequestHeaders.Accept.ParseAdd("text/*");
   httpClient.DefaultRequestHeaders.UserAgent.TryParseAdd("Shockwave Flash");

   HttpResponseMessage response = new HttpResponseMessage();
   var content = new MultipartFormDataContent();//使用MultipartFormDataContent进行form-data请求头封装
   var contentByteContent = new ByteArrayContent(uploadImageInfo.ContentByte);
   contentByteContent.Headers.Add("Content-Type", "application/octet-stream");
   contentByteContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data");
   contentByteContent.Headers.ContentDisposition.FileName = "\"" + uploadImageInfo.Name + "\"";
   contentByteContent.Headers.ContentDisposition.Name = "\"imagefile\"";//封装POST请求头
    {
      content.Add(new StringContent(uploadImageInfo.Name), "\"Filename\"");
      content.Add(new StringContent("1"), "\"uploadTokenType\"");
      content.Add(new StringContent("0"), "\"fileType\"");
      content.Add(new StringContent(uploadImageInfo.Name), "\"title\"");
      content.Add(new StringContent("2"), "\"userTokenType\"");
      content.Add(new StringContent(campaignId), "\"campaignId\"");
      content.Add(new StringContent(userId), "\"userId\"");
      content.Add(new StringContent(uploadtoken), "\"uploadToken\"");
      content.Add(new StringContent(uzrtoken), "\"userToken\"");
      content.Add(contentByteContent, "\"imagefile\"");
      content.Add(new StringContent("Submit Query"), "\"Upload\"");
    }

   response = await httpClient.PostAsync(new Uri("http://media.sony.com.cn/alphacafe/upload", UriKind.Absolute), content);
   string sid = response.Content.ReadAsStringAsync().Result;
   
   if (response.IsSuccessStatusCode&&sid.Contains("fileID")==true)
    {
      string s = response.Content.ReadAsStringAsync().Result.Split('"')[7];
      return s;
    }
   else return "failed";
}



0x03.上传

private async void Submit_Click(object sender, RoutedEventArgs e)
{
  foreach (UploadImageInfo item in imgitems)
   {
    string fileId = await UploadImageInfo.UploadFilesAsync(item, tokenInfo.userToken, tokenInfo.upLoadToken, userId, "16");
    if (fileId.Contains("failed") == false)
     {
      item.FileID.Insert(0, fileId);//上传成功则返回文件Id
     }
   }
}