/// <summary> /// Updates user's imageBlobId /// </summary> public Response UpdateImage(Objects.User user, Objects.File file) { Response response = new Response(); try { Database.Connection.Open(); string Query = " UPDATE Users SET ImageBlobId=@ImageBlobId WHERE UserId=@UserId "; MySqlCommand Command = new MySqlCommand(Query, Database.Connection); Command.Parameters.AddWithValue("UserId", user.Id); Command.Parameters.AddWithValue("ImageBlobId", file.BlobId); Command.ExecuteNonQuery(); Database.Connection.Close(); // Updated Successfully response.StatusCode = 200; response.Data = user; } catch (MySqlException e) { Logger.QueryError(e, "User", "Updating Image"); // Status Code response.StatusCode = 500; } //Close Connection if Open if (Database.Connection.State == ConnectionState.Open) { Database.Connection.Close(); } return(response); }
/// <summary> /// Get file from db /// </summary> public Response Get(string blobId) { int statusCode = 200; Response response = new Response(); Objects.File file = new Objects.File(); try { //Open MySqlConnection Database.Connection.Open(); //Query string Query = "SELECT * FROM Blobs WHERE BlobId=@BlobId"; //Execute Query MySqlCommand Command = new MySqlCommand(Query, Database.Connection); Command.Parameters.AddWithValue("BlobId", blobId); MySqlDataReader DataReader = Command.ExecuteReader(); //Read Data while (DataReader.Read()) { file.Path = DataReader["Path"].ToString(); file.FullPath = DataReader["Url"].ToString(); file.CreatedAt = Convert.ToDateTime(DataReader["CreatedAt"].ToString()); } if (!DataReader.HasRows) { // Bad Request statusCode = 400; } else { // OK statusCode = 200; } //Close Connection Database.Connection.Close(); // Response file.BlobId = blobId; response.Data = file; } catch (Exception e) { Logger.Error(e, 500, "Blob", "Get"); statusCode = 500; } //Close Connection if Open if (Database.Connection.State == ConnectionState.Open) { Database.Connection.Close(); } response.StatusCode = statusCode; return(response); }
/// <summary> /// Upload file to server and save to db & return blobId /// </summary> public Response Create(Objects.File file) { int statusCode = 200; var blobId = ServerUtil.GenerateToken(TokenLengths.BlobIdLength); Response response = new Response(); try { var res = FileTransfer.File.Upload(file); if (res.StatusCode != 200) { statusCode = res.StatusCode; throw new Exception("Error Occured while Uploading File"); } var _file = (Objects.File)res.Data; file.Path = _file.Path; file.FullPath = _file.FullPath; //Open MySqlConnection Database.Connection.Open(); var query = "INSERT INTO Blobs (BlobId, Path, Url) VALUES (@BlobId, @Path, @Url)"; //Execute Query With MySqlConnection MySqlCommand Command = new MySqlCommand(query, Database.Connection); Command.Parameters.AddWithValue("BlobId", blobId); Command.Parameters.AddWithValue("Path", file.Path); Command.Parameters.AddWithValue("Url", file.FullPath); Command.ExecuteNonQuery(); //Close Connection Database.Connection.Close(); // Response file.BlobId = blobId; response.Data = file; } catch (Exception e) { Logger.Error(e, 500, "Blob", "Create"); statusCode = 500; } //Close Connection if Open if (Database.Connection.State == ConnectionState.Open) { Database.Connection.Close(); } response.StatusCode = statusCode; return(response); }
/// <summary> /// Deletes a File from the Server /// </summary> /// <returns></returns> public static Response Delete(Objects.File file) { Response response = new Response(); try { //Get Paths var serverAddress = $@"{ftpServerPath}{ file.Path }"; // Get the object used to communicate with the server. FtpWebRequest ftpWebRequest = (FtpWebRequest)WebRequest.Create(serverAddress); ftpWebRequest.Credentials = new NetworkCredential(ftpUsername, ftpPassword); //Delete File ftpWebRequest.Method = WebRequestMethods.Ftp.DeleteFile; FtpWebResponse ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse(); var status = string.Format("Delete status: {0}", ftpWebResponse.StatusDescription); Logger.Log(status, "FileTransfer", "Delete", null, Logger.LogType.Info); ftpWebResponse.Close(); // OK / Accepted response.StatusCode = 200; } catch (WebException e) { FtpWebResponse ftpWebResponse = (FtpWebResponse)e.Response; if (ftpWebResponse.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable) { ftpWebResponse.Close(); Logger.Error(e, 500, "FileTransfer", "Delete"); } else { ftpWebResponse.Close(); } } catch (Exception e) { // Internal Server Error response.StatusCode = 500; Logger.Error(e, 500, "FileTransfer", "Delete"); } return(response); }
/// <summary> /// Delete file from server and db /// </summary> public Response Delete(Objects.File file) { int statusCode = 200; Response response = new Response(); try { var res = FileTransfer.File.Delete(file); if (res.StatusCode != 200) { statusCode = res.StatusCode; throw new Exception("Error Occured while Deleting File"); } //Open MySqlConnection Database.Connection.Open(); var query = "DELETE FROM Blobs WHERE BlobId=@BlobId "; //Execute Query With MySqlConnection MySqlCommand Command = new MySqlCommand(query, Database.Connection); Command.Parameters.AddWithValue("BlobId", file.BlobId); Command.ExecuteNonQuery(); //Close Connection Database.Connection.Close(); // Response response.Data = file; } catch (Exception e) { Logger.Error(e, 500, "Blob", "Delete"); statusCode = 500; } //Close Connection if Open if (Database.Connection.State == ConnectionState.Open) { Database.Connection.Close(); } response.StatusCode = statusCode; return(response); }
internal static readonly string ServerFolderUrl = "YOUR_FOLDER_GOES_HERE"; // ex. //var/www/rigle/vendstor/uploads /// <summary> /// Upload File => returns folder/token.extension as Response /// </summary> /// <returns></returns> public static Response Upload(Objects.File file) { int statusCode = 200; Response response = new Response(); try { //Get Paths var fileName = $@"{ ( (!file.UseCustomName) ? ServerUtil.GenerateToken(10) : file.SaveName ) }{ file.Extension }"; var serverAddress = $@"{ftpServerPath}{ file.ServerFolder }{ fileName }"; //Create Request ftpWebRequest = WebRequest.Create(new Uri(string.Format(serverAddress))) as FtpWebRequest; ftpWebRequest.Credentials = new NetworkCredential(ftpUsername, ftpPassword); ftpWebRequest.Method = WebRequestMethods.Ftp.UploadFile; ftpWebRequest.UseBinary = true; ftpWebRequest.UsePassive = true; ftpWebRequest.KeepAlive = false; using (FileStream fileStream = System.IO.File.OpenRead(file.SystemFileName)) { //Request Stream Stream ftpRequestStream = ftpWebRequest.GetRequestStream(); fileStream.CopyTo(ftpRequestStream); ftpRequestStream.Close(); } // OK, Accepted statusCode = 200; //Send Path Without Server Domain Name file.Path = serverAddress.Replace(ftpServerPath, "").Replace(ServerFolderUrl, ""); file.FullPath = serverAddress.Replace("ftp", "http").Replace(ServerFolderUrl, "/"); response.Data = file; response.StatusCode = statusCode; } catch (WebException e) { FtpWebResponse ftpWebResponse = (FtpWebResponse)e.Response; if (ftpWebResponse.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable) { ftpWebResponse.Close(); Logger.Error(e, 500, "FileTransfer", "Upload"); } else { ftpWebResponse.Close(); } } catch (Exception e) { //[HTTP Status Code] Internal Server Error response.StatusCode = 500; Logger.Error(e, 500, "FileTransfer", "Upload"); } return(response); }