示例#1
0
文件: User.cs 项目: vendstor/vendstor
        /// <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);
        }
示例#2
0
文件: Blob.cs 项目: vendstor/vendstor
        /// <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);
        }
示例#3
0
文件: Blob.cs 项目: vendstor/vendstor
        /// <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);
        }
示例#4
0
            /// <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);
            }
示例#5
0
文件: Blob.cs 项目: vendstor/vendstor
        /// <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);
        }
示例#6
0
            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);
            }