public void OnBeginUploadFile(WebSocketUploadFile.UploadHeader header, bool isContinue) { var handler = (IUploadCompleted)_app.ApplicationServices.GetService(typeof(IUploadCompleted)); if (handler != null) { handler.OnFileComing(header); } if (_dict.ContainsKey(header.TranId.Value) == false) { if (header.Position > 0) { throw new Exception("服务器已经没有此文件的续传记录"); } if (System.IO.Directory.Exists($"{AppDomain.CurrentDomain.BaseDirectory}Temp/WebSocketUploadFile") == false) { System.IO.Directory.CreateDirectory($"{AppDomain.CurrentDomain.BaseDirectory}Temp/WebSocketUploadFile"); } string filepath = $"{AppDomain.CurrentDomain.BaseDirectory}Temp/WebSocketUploadFile/{Guid.NewGuid().ToString("N")}"; _dict[header.TranId.Value] = new FileOwner { Stream = System.IO.File.Create(filepath) }; } }
public void OnUploadCompleted(WebSocketUploadFile.UploadHeader header) { var stream = _dict[header.TranId.Value].Stream; string filepath = stream.Name; stream.Close(); stream.Dispose(); var handler = (IUploadCompleted)_app.ApplicationServices.GetService(typeof(IUploadCompleted)); if (handler != null) { try { header.FilePath = filepath; handler.OnUploadCompleted(header); } catch { } finally { _dict.Remove(header.TranId.Value); try { System.IO.File.Delete(filepath); } catch { } } } }
public void OnReceivedFileContent(WebSocketUploadFile.UploadHeader header, byte[] data, int length, long filePosition) { var owner = _dict[header.TranId.Value]; owner.LastWriteTime = DateTime.Now; owner.Stream.Seek(filePosition, System.IO.SeekOrigin.Begin); owner.Stream.Write(data, 0, length); }
public void OnError(WebSocketUploadFile.UploadHeader header) { }