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); } }
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; } }
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); }
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(); }
private void OnBeginUpload() { _startDate = DateTime.Now; this._fileUploadStatus = FileUploadStatus.Uploading; _processUpload(); }
public override void Resume() { if (_fileUploadStatus == FileUploadStatus.Paused) { _fileUploadStatus = FileUploadStatus.Uploading; _processUpload(); OnProgressChanged(); } }
public override void Pause() { if (_fileUploadStatus == FileUploadStatus.Uploading) { _fileUploadStatus = FileUploadStatus.Paused; OnProgressChanged(); } }
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; }