Example #1
0
        private async Task UploadInner(UserFileInfo fileInfo, UserFile file, Stream sr, Guid uploadStatusId)
        {
            var uploadStatus = Stauts();

            if (uploadStatusId != Guid.Empty)
            {
                var lastStatus = uploadStatus.FileStatus.Where(s => s.Id == uploadStatusId).FirstOrDefault();
                if (lastStatus == null)
                {
                    throw new ActionStatusMessageException(ActionStatusMessage.StaticMessage.CacheIsInvalid);
                }
                fileInfo = lastStatus.FileInfo;
                file     = context.UserFiles.Find(uploadStatusId);
            }
            var f = new FileUploadStatus()
            {
                FileInfo   = fileInfo,
                Total      = fileInfo.Length,
                LastUpdate = DateTime.Now
            };

            file.Data = new byte[fileInfo.Length];

            uploadStatus.FileStatus.Add(f);
            await context.SaveChangesAsync().ConfigureAwait(true);

            try
            {
                while (f.Current < f.Total)
                {
                    var bufSize = f.Total - upload_bufsize - f.Current > 0 ? upload_bufsize : f.Total - f.Current;
                    await sr.ReadAsync(file.Data, (int)f.Current, (int)bufSize).ConfigureAwait(true);

                    f.Current += bufSize;
                    // 只有在时间达到10秒时才更新进度,减少服务器消耗
                    if (DateTime.Now.Subtract(f.LastUpdate).TotalSeconds > 10)
                    {
                        f.LastUpdate = DateTime.Now;
                        context.FileUploadStatuses.Update(f);
                        await context.SaveChangesAsync().ConfigureAwait(true);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"UplloadInner.Exception:{ex.Message}");
            }
            finally
            {
                context.UserFiles.Update(file);
                context.FileUploadStatuses.Update(f);
                await context.SaveChangesAsync().ConfigureAwait(true);
            }
        }
 // Start is called before the first frame update
 void Start()
 {
     try
     {
         string path     = Application.persistentDataPath + "/Data/UploadStatus.json";
         string contents = File.ReadAllText(path);
         fileUploadStatus = JsonUtility.FromJson <FileUploadStatus>(contents);
     }
     catch (Exception e)
     {
         fileUploadStatus = new FileUploadStatus
         {
             fileNames = new List <string>()
         };
         Debug.Log(e);
     }
 }
Example #3
0
        void ReadCallback(IAsyncResult asynchronousResult)
        {
            HttpWebRequest  webrequest = (HttpWebRequest)asynchronousResult.AsyncState;
            HttpWebResponse response   = (HttpWebResponse)webrequest.EndGetResponse(asynchronousResult);
            StreamReader    reader     = new StreamReader(response.GetResponseStream());

            string responsestring = reader.ReadToEnd();

            reader.Close();

            if (this.BytesUploaded < this.FileLength)
            {
                this.UploadFileEx();
            }
            else
            {
                this.Status = FileUploadStatus.Complete;
            }
        }
Example #4
0
        void UploadFileEx()
        {
            this.Status = FileUploadStatus.Uploading;
            long temp = FileLength - BytesUploaded;

            UriBuilder ub       = new UriBuilder(UploadUrl);
            bool       complete = temp <= ChunkSize;

            ub.Query = string.Format("{6}filename={0}&StartByte={1}&Complete={2}&SampleRate={3}&BitsPerSample={4}&Channels={5}", this.Name, BytesUploaded, complete,
                                     this.SampleRate.ToString(),
                                     this.BitsPerSample.ToString(),
                                     this.Channels.ToString(),
                                     string.IsNullOrEmpty(ub.Query) ? "" : ub.Query.Remove(0, 1) + "&");

            HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(ub.Uri);

            webrequest.Method = "POST";
            webrequest.BeginGetRequestStream(new AsyncCallback(WriteCallback), webrequest);
        }
Example #5
0
 private void OnUploadCompleted(Exception ex)
 {
     if (ex != null)
     {
         this.Message = ex.ToString();
         _fileUploadStatus = FileUploadStatus.Error;
     }
     if(_fileUploadStatus == FileUploadStatus.Uploading)
     {
         _fileUploadStatus = FileUploadStatus.Complete;
     }
     _eta = null;
     _uploadSpeed = null;
     _endDate = DateTime.Now;
     _averageChunkUpload = null;
     OnUploadCompleted();
 }
Example #6
0
 private void OnBeginUpload()
 {
     _startDate = DateTime.Now;
     this._fileUploadStatus = FileUploadStatus.Uploading;
     _processUpload();
 }
Example #7
0
 public override void Resume()
 {
     if (_fileUploadStatus == FileUploadStatus.Paused)
     {
         _fileUploadStatus = FileUploadStatus.Uploading;
         _processUpload();
         OnProgressChanged();
     }
 }
Example #8
0
 public override void Pause()
 {
     if (_fileUploadStatus == FileUploadStatus.Uploading)
     {
         _fileUploadStatus = FileUploadStatus.Paused;
         OnProgressChanged();
     }
 }
Example #9
0
 public override void Cancel()
 {
     if (_fileUploadStatus == FileUploadStatus.Uploading || _fileUploadStatus == FileUploadStatus.Pending || _fileUploadStatus == FileUploadStatus.Paused)
     {
         _fileUploadStatus = FileUploadStatus.Canceled;
         OnProgressChanged();
     }
 }
 public void UploadFile(string pathToFile, IBlobStorageHelper blobStorageHelper)
 {
     blobStorageHelper.UploadTo(pathToFile, Settings.BlobSasUri);
     UploadStatus = FileUploadStatus.Created;
 }