otkalce

MVC - HTML Form Input (+File)

Apr 20th, 2023 (edited)
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.06 KB | Source Code | 0 0
  1. *** Database table schema ***
  2.  
  3. CREATE TABLE [Service](
  4. [Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
  5. [Name] [nvarchar](128) NULL,
  6. [Description] [nvarchar](1024) NULL,
  7. [ImageUrl] [nvarchar](128) NULL)
  8. GO
  9.  
  10. SET IDENTITY_INSERT Service ON
  11. GO
  12.  
  13. INSERT INTO Service (Id, [Name], [Description], ImageUrl)
  14. VALUES
  15. ( 1, 'Nesciunt Mete', 'Provident nihil minus qui consequatur non omnis maiores. Eos accusantium minus dolores iure perferendis.', '/images/services-1.jpg' ),
  16. ( 2, 'Eosle Commodi', 'Ut autem aut autem non a. Sint sint sit facilis nam iusto sint. Libero corrupti neque eum hic non ut nesciunt dolorem.', '/images/services-2.jpg' ),
  17. ( 3, 'Ledo Markt', 'Ut excepturi voluptatem nisi sed. Quidem fuga consequatur. Minus ea aut. Vel qui id voluptas adipisci eos earum corrupti.', '/images/services-3.jpg' ),
  18. ( 4, 'Asperiores Commodit', 'Non et temporibus minus omnis sed dolor esse consequatur. Cupiditate sed error ea fuga sit provident adipisci neque.', '/images/services-4.jpg' ),
  19. ( 5, 'Velit Doloremque', 'Cumque et suscipit saepe. Est maiores autem enim facilis ut aut ipsam corporis aut. Sed animi at autem alias eius labore.', '/images/services-5.jpg' ),
  20. ( 6, 'Dolori Architecto', 'Hic molestias ea quibusdam eos. Fugiat enim doloremque aut neque non et debitis iure. Corrupti recusandae ducimus enim.', '/images/services-6.jpg' )
  21. GO
  22.  
  23. SET IDENTITY_INSERT Service OFF
  24. GO
  25.  
  26. CREATE TABLE [dbo].[FormData](
  27. [Id] [int] IDENTITY(1,1) NOT NULL,
  28. [TestText] [nvarchar](128) NULL,
  29. [TestTel] [nvarchar](128) NULL,
  30. [TestUrl] [nvarchar](128) NULL,
  31. [TestEmail] [nvarchar](128) NULL,
  32. [TestNumber] [int] NULL,
  33. [TestPassword] [nvarchar](128) NULL,
  34. [TestCheckbox1] [bit] NULL,
  35. [TestCheckbox2] [bit] NULL,
  36. [TestRadio] [nvarchar](128) NULL,
  37. [TestColor] [nvarchar](128) NULL,
  38. [TestRange] [nvarchar](128) NULL,
  39. [TestDate1] [date] NULL,
  40. [TestDate2] [date] NULL,
  41. [TestDateTime] [datetime2](7) NULL,
  42. [TestMonth] [nvarchar](128) NULL,
  43. [TestTime] [nvarchar](128) NULL,
  44. [TestWeek] [nvarchar](128) NULL,
  45. [TestHidden] [nvarchar](128) NULL,
  46. PRIMARY KEY CLUSTERED ([Id] ASC)
  47. )
  48. GO
  49.  
  50. CREATE TABLE [dbo].[FormDataFile](
  51. [Id] [int] NOT NULL,
  52. [FileContent] [nvarchar](max) NOT NULL,
  53. [Name] [nvarchar](128) NULL,
  54. PRIMARY KEY CLUSTERED ([Id] ASC)
  55. )
  56. GO
  57.  
  58. CREATE TABLE [dbo].[FormDataImage](
  59. [Id] [int] IDENTITY(1,1) NOT NULL,
  60. [FormDataId] [int] NOT NULL,
  61. [Name] [nvarchar](128) NOT NULL,
  62. [Content] [nvarchar](max) NOT NULL,
  63. [ContentType] [nvarchar](128) NOT NULL,
  64. PRIMARY KEY CLUSTERED ([Id] ASC)
  65. )
  66. GO
  67.  
  68. ALTER TABLE [dbo].[FormDataFile]
  69. ADD CONSTRAINT [FK_FormDataFile_FormData] FOREIGN KEY([Id])
  70. REFERENCES [dbo].[FormData] ([Id])
  71. GO
  72.  
  73. ALTER TABLE [dbo].[FormDataImage]
  74. ADD CONSTRAINT [FK_FormDataImage_FormData] FOREIGN KEY([FormDataId])
  75. REFERENCES [dbo].[FormData] ([Id])
  76. GO
  77.  
  78. *** Code for saving FormData to database ***
  79.  
  80. var formData = new FormDatum
  81. {
  82. TestText = model.TestText,
  83. TestTel = model.TestTel,
  84. TestUrl = model.TestUrl,
  85. TestEmail = model.TestEmail,
  86. TestNumber = model.TestNumber,
  87. TestPassword = model.TestPassword,
  88. TestCheckbox1 = model.TestCheckbox1,
  89. TestCheckbox2 = model.TestCheckbox2,
  90. TestRadio = model.TestRadio,
  91. TestColor = model.TestColor,
  92. TestRange = model.TestRange,
  93. TestDate1 = model.TestDate1,
  94. TestDate2 = model.TestDate2,
  95. TestDateTime = model.TestDateTime,
  96. TestMonth = model.TestMonth,
  97. TestTime = model.TestTime,
  98. TestWeek = model.TestWeek,
  99. TestHidden = model.TestHidden,
  100. };
  101. _dbContext.FormData.Add(formData);
  102.  
  103. using (var memoryStream = new MemoryStream())
  104. {
  105. model.TestFile.CopyTo(memoryStream);
  106.  
  107. if (memoryStream.Length < 50 * 1024 * 1024)
  108. {
  109. var file = new FormDataFile()
  110. {
  111. IdNavigation = formData,
  112. FileContent = Convert.ToBase64String(memoryStream.ToArray())
  113. };
  114. _dbContext.FormDataFiles.Add(file);
  115.  
  116. _dbContext.SaveChanges();
  117. }
  118. else
  119. {
  120. ModelState.AddModelError("File", "The file is too large.");
  121. }
  122. }
  123.  
Tags: dotnet-mvc
Add Comment
Please, Sign In to add comment