public void SendFile(string pathArchivo) { var portocol = new TCPProtocol(); try { //Obtengo el archivo byte[] fileBytes = FileHelper.ReadFile(pathArchivo); var request = new UploadRequest(); request.ClientName = ClientData.Instance.ClientName; request.FileName = Path.GetFileName(pathArchivo); request.FileLength = fileBytes.LongLength; request.File = fileBytes; //Me conecto al servidor de archivos portocol.ConnectClient(ClientData.Instance.ServerIP, ClientData.Instance.ServerPort); SendRemotingConnectionRequest(); //Envio el archivo y obtengo respuesta var response = request.SendFile(portocol); //Le comunico al servidor de registro de pedi subir un archivo. var remotingRequest = new ClientUploadRequest() { ClientName = ClientData.Instance.ClientName, FileName = Path.GetFileName(pathArchivo) }; _remotingService.SendMessage(remotingRequest); if (response.Result == TransferResponseEnum.OK) { CurrentStatus = "Archivo subido con exito"; } else if (response.Result == TransferResponseEnum.FileExists) { CurrentStatus = "Error: El archivo ya existia en el servidor."; } else { CurrentStatus = "Ocurrio un error."; } } catch { CurrentStatus = "Ocurrio un error."; } finally { portocol.Disconnect(); SendRemotingDisconnectionRequest(); } }
private void UploadFile(TCPProtocol protocol, UploadRequest request) { var response = new UploadResponse(); try { //Le comunico al servidor de conciliacion un usuario pidio subir un archivo. var remotingRequest = new ClientUploadRequest() { ClientName = request.ClientName, FileName = request.FileName }; _remotingService.SendMessage(remotingRequest); response.Result = ServerData.Instance.FileExists(request.FileName) ? TransferResponseEnum.FileExists : TransferResponseEnum.OK; protocol.SendMessage(response); if (response.Result == TransferResponseEnum.OK) { bool archivo = protocol.RecieveFile(string.Format("{0}\\{1}", ServerData.Instance.FileRepository, request.FileName), true, request.FileLength); response = new UploadResponse(); response.Result = (archivo) ? TransferResponseEnum.OK : TransferResponseEnum.Error; if (response.Result == TransferResponseEnum.OK) { ServerData.Instance.AddFile(request.FileName); } else { FileHelper.DeleteFile(string.Format("{0}\\{1}", ServerData.Instance.FileRepository, request.FileName)); } protocol.SendMessage(response); } else { Console.WriteLine("Error subiendo archivo"); } } catch (Exception ex) { FileHelper.DeleteFile(string.Format("{0}\\{1}", ServerData.Instance.FileRepository, request.FileName)); response.Result = TransferResponseEnum.ConnectionError; protocol.SendMessage(response); } }
public ClientUploadResponse NotifyUploadRequest(ClientUploadRequest message) { try { Logger.LogMessage(string.Format("Info: El cliente de nombre: {0} solicito la subida del archivo: {1}", message.ClientName, message.FileName)); CommunicationMQ.EnviarMensaje(CommunicationMQ.QueueComunicaciones, message, string.Format("Info: El cliente de nombre: {0} solicito la subida del archivo: {1}", message.ClientName, message.FileName)); return(new ClientUploadResponse() { Cmd = CommandEnum.ClientDisconnection, Header = MessageTypeEnum.RES, Result = TransferResponseEnum.OK }); } catch (Exception ex) { throw new Exception(string.Format("Error: no se pudo notificar la conexion: {0}", ex.Message)); } }