{"id":5317,"date":"2022-10-11T13:36:34","date_gmt":"2022-10-11T17:36:34","guid":{"rendered":"https:\/\/www.cloudsurph.com\/?p=5317"},"modified":"2022-10-11T13:36:55","modified_gmt":"2022-10-11T17:36:55","slug":"defining-the-adonisjs-file-uploads-module","status":"publish","type":"post","link":"https:\/\/www.cloudsurph.com\/defining-the-adonisjs-file-uploads-module\/","title":{"rendered":"AdonisJS: File Uploads"},"content":{"rendered":"<p>In this article, we can try to Define the AdonisJS File uploads Module, A file upload module built for AdonisJS, and How to Manage File Uploads and Validate Them in AdonisJS.<\/p>\n<h3>File Uploads<\/h3>\n<p>AdonisJS provides you with a robust and performant API for dealing with file uploads. You can process and store uploaded files locally. Also, you can stream them directly to the cloud services like S3 or Google cloud storage.<\/p>\n<p><strong><em>You can check our previous article:\u00a0<a href=\"https:\/\/www.cloudsurph.com\/adonisjs-rest-api-crud-setup\/\">AdonisJS: REST API simple CRUD Operation<\/a>. IF you want then buy a good, reliable, secure web\u00a0<a href=\"https:\/\/www.cloudsurph.com\/windows-vps-hosting\/\">hosting<\/a>\u00a0service \u00a0from here:\u00a0<a href=\"https:\/\/hosting.cloudsurph.com\/\">click here<\/a><\/em><\/strong><\/p>\n<h3>Accessing Uploaded Files<\/h3>\n<p>In the body-parser middleware registered inside the <strong>start\/kernel.ts<\/strong> file automatically processes all the files for <strong>multipart\/form-data<\/strong> requests.<\/p>\n<p>Here, you can access the files using the <strong>request.file<\/strong> procedure. And the method accepts the field name and returns an instance of the File class, and null if no file was uploaded into your project.<\/p>\n<pre class=\"prettyprint\">\r\nimport Route from '@ioc:Adonis\/Core\/Route'\r\nimport Application from '@ioc:Adonis\/Core\/Application'\r\n\r\nRoute.post('posts', async ({ request }) =&gt; {\r\nconst coverImage = request.file('cover_image')\r\n\r\nif (coverImage) {\r\nawait coverImage.move(Application.tmpPath('uploads'))\r\n}\r\n})\r\n<\/pre>\n<p>So, when you accept multiple files from the same input, here you can use the <strong>request.files<\/strong> method returns an array of the file instances.<\/p>\n<pre class=\"prettyprint\">\r\nimport Route from '@ioc:Adonis\/Core\/Route'\r\nimport Application from '@ioc:Adonis\/Core\/Application'\r\n\r\nRoute.post('gallery', async ({ request }) =&gt; {\r\nconst images = request.files('images')\r\n\r\nfor (let image of images) {\r\nawait image.move(Application.tmpPath('uploads'))\r\n}\r\n})\r\n<\/pre>\n<h3>Validating Files<\/h3>\n<p>However, you can also validate the file by specifying the rules for the file extension. The file size and AdonisJS will perform the validation round.<\/p>\n<h5><em><strong>You can purchase your\u00a0<a href=\"https:\/\/hosting.cloudsurph.com\/\">hosting from Cloudsurph.com<\/a>,\u00a0<a href=\"https:\/\/hosting.cloudsurph.com\/\">Cloudsurph hosting<\/a>\u00a0is a reliable hosting option for business and personal projects. We offer insight and help on system configuration issues and code errors or bugs<\/strong>.<\/em><\/h5>\n<pre class=\"prettyprint\">\r\nconst coverImage = request.file('cover_image', {\r\nsize: '2mb',\r\nextnames: ['jpg', 'png', 'gif'],\r\n})\r\nif (!coverImage) {\r\nreturn\r\n}\r\nif (!coverImage.isValid) {\r\nreturn coverImage.errors\r\n}\r\nawait coverImage.move(Application.tmpPath('uploads'))\r\n<\/pre>\n<h3>Validating Files Using the Validator<\/h3>\n<p>Also. You can use the <a href=\"https:\/\/docs.adonisjs.com\/guides\/validator\/introduction\">validator<\/a> to validate the user-uploaded files alongside the rest of the form.<\/p>\n<p>The <strong>schema.file<\/strong> method validates the input to be a valid file, along with any custom validation rules provided for the file size and the extension for your application or project.<\/p>\n<p>So, if the file validation fails, then you can access the error message alongside the form errors. \u00a0Otherwise, you can access the file instance and move it to the desired file location.<\/p>\n<pre class=\"prettyprint\">\r\nimport Route from '@ioc:Adonis\/Core\/Route'\r\nimport { schema } from '@ioc:Adonis\/Core\/Validator'\r\nimport Application from '@ioc:Adonis\/Core\/Application'\r\n\r\nRoute.post('posts', async ({ request }) =&gt; {\r\nconst postSchema = schema.create({\r\ncover_image: schema.file({\r\nsize: '2mb',\r\nextnames: ['jpg', 'gif', 'png'],\r\n}),\r\n})\r\nconst payload = await request.validate({ schema: postSchema })\r\nawait payload.cover_image.move(Application.tmpPath('uploads'))\r\n})\r\n<\/pre>\n<h3>Saving Files<\/h3>\n<p>Now you can save user-uploaded files using the <strong>moveToDisk<\/strong> method and it will use AdonisJS <a href=\"https:\/\/docs.adonisjs.com\/guides\/drive\">Drive<\/a> under the hood to save your files.<\/p>\n<pre class=\"prettyprint\">\r\nconst coverImage = request.file('cover_image', {\r\nsize: '2mb',\r\nextnames: ['jpg', 'png', 'gif'],\r\n})!\r\nawait coverImage.moveToDisk('.\/')\r\n\/\/ Get the name of the saved file; to store it in your database, for example.\r\nconst fileName = coverImage.fileName;\r\n<\/pre>\n<h6><em><strong>If you want to know more about AdonisJS Model relationships then please visit\u00a0<a href=\"https:\/\/preview.adonisjs.com\/guides\/model-relations\/introduction\">AdonisJs<\/a>\u00a0main website.<\/strong><\/em><\/h6>\n<p>If you enjoyed reading this article and have more questions please reach out to our\u00a0<a href=\"https:\/\/hosting.cloudsurph.com\/submitticket.php?step=2&amp;deptid=1\">support team<\/a>\u00a0via live chat or\u00a0<a href=\"mailto:support@cloudsurph.com\">email<\/a>\u00a0and we would be glad to help you. we provide server\u00a0<a href=\"https:\/\/hosting.cloudsurph.com\/\">hosting<\/a>\u00a0for all types of need and we can even get your\u00a0<a href=\"https:\/\/hosting.cloudsurph.com\/\">server<\/a>\u00a0up and running with the service of your choice.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this article, we can try to Define the AdonisJS File uploads Module, A file upload module built for AdonisJS, and How to Manage File Uploads and Validate Them in AdonisJS. File Uploads AdonisJS provides you with a robust and performant API for dealing with file uploads. You can process and store uploaded files locally. [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":5318,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[152,157,25,158,159,151,44,1],"tags":[54,47,105,103,48,113],"class_list":["post-5317","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-adonisjs","category-centos-7","category-web-hosting-virtualization","category-linux-basics","category-linux-server","category-react-js","category-kvm-xen","category-virtual-private-servers","tag-best-vps-hosting-server-maryland","tag-cheap-cloud-servers","tag-cheap-storage-server-hosting","tag-cheapest-vps","tag-dedicated-server-hosting-in-washington-d-c","tag-speed-test-vps"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Defining the AdonisJS File Uploads Module<\/title>\n<meta name=\"description\" content=\"Defining the AdonisJS File Uploads Module, A file upload module built for AdonisJS, and How to Manage File Uploads and Validate AdonisJS\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.cloudsurph.com\/defining-the-adonisjs-file-uploads-module\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Defining the AdonisJS File Uploads Module\" \/>\n<meta property=\"og:description\" content=\"Defining the AdonisJS File Uploads Module, A file upload module built for AdonisJS, and How to Manage File Uploads and Validate AdonisJS\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.cloudsurph.com\/defining-the-adonisjs-file-uploads-module\/\" \/>\n<meta property=\"og:site_name\" content=\"Cloudsurph Web Hosting Washington D.C.\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/CloudSurph\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-11T17:36:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-10-11T17:36:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.cloudsurph.com\/wp-content\/uploads\/2022\/10\/Defining-the-AdonisJS-File-uploads-Module.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1264\" \/>\n\t<meta property=\"og:image:height\" content=\"760\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Rony\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@cloudsurph\" \/>\n<meta name=\"twitter:site\" content=\"@Cloud_Surph\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rony\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.cloudsurph.com\\\/defining-the-adonisjs-file-uploads-module\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.cloudsurph.com\\\/defining-the-adonisjs-file-uploads-module\\\/\"},\"author\":{\"name\":\"Rony\",\"@id\":\"https:\\\/\\\/www.cloudsurph.com\\\/#\\\/schema\\\/person\\\/ac9b4dd136d96e50d5f29c560191e7ed\"},\"headline\":\"AdonisJS: File Uploads\",\"datePublished\":\"2022-10-11T17:36:34+00:00\",\"dateModified\":\"2022-10-11T17:36:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.cloudsurph.com\\\/defining-the-adonisjs-file-uploads-module\\\/\"},\"wordCount\":428,\"publisher\":{\"@id\":\"https:\\\/\\\/www.cloudsurph.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.cloudsurph.com\\\/defining-the-adonisjs-file-uploads-module\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.cloudsurph.com\\\/wp-content\\\/uploads\\\/2022\\\/10\\\/Defining-the-AdonisJS-File-uploads-Module.jpg\",\"keywords\":[\"Best VPS hosting server Maryland\",\"Cheap Cloud Servers\",\"Cheap Storage Server Hosting\",\"Cheapest VPS\",\"Dedicated Server Hosting in Washington D.C\",\"Speed test VPS\"],\"articleSection\":[\"AdonisJS\",\"CentOS 7\",\"Cloud Hosting\",\"Linux Basics\",\"Linux Server\",\"React Js\",\"Virtualization\",\"VPS Servers\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.cloudsurph.com\\\/defining-the-adonisjs-file-uploads-module\\\/\",\"url\":\"https:\\\/\\\/www.cloudsurph.com\\\/defining-the-adonisjs-file-uploads-module\\\/\",\"name\":\"Defining the AdonisJS File Uploads Module\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.cloudsurph.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.cloudsurph.com\\\/defining-the-adonisjs-file-uploads-module\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.cloudsurph.com\\\/defining-the-adonisjs-file-uploads-module\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.cloudsurph.com\\\/wp-content\\\/uploads\\\/2022\\\/10\\\/Defining-the-AdonisJS-File-uploads-Module.jpg\",\"datePublished\":\"2022-10-11T17:36:34+00:00\",\"dateModified\":\"2022-10-11T17:36:55+00:00\",\"description\":\"Defining the AdonisJS File Uploads Module, A file upload module built for AdonisJS, and How to Manage File Uploads and Validate AdonisJS\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.cloudsurph.com\\\/defining-the-adonisjs-file-uploads-module\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.cloudsurph.com\\\/defining-the-adonisjs-file-uploads-module\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.cloudsurph.com\\\/defining-the-adonisjs-file-uploads-module\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.cloudsurph.com\\\/wp-content\\\/uploads\\\/2022\\\/10\\\/Defining-the-AdonisJS-File-uploads-Module.jpg\",\"contentUrl\":\"https:\\\/\\\/www.cloudsurph.com\\\/wp-content\\\/uploads\\\/2022\\\/10\\\/Defining-the-AdonisJS-File-uploads-Module.jpg\",\"width\":1264,\"height\":760,\"caption\":\"Defining the AdonisJS File uploads Module\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.cloudsurph.com\\\/defining-the-adonisjs-file-uploads-module\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.cloudsurph.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AdonisJS: File Uploads\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.cloudsurph.com\\\/#website\",\"url\":\"https:\\\/\\\/www.cloudsurph.com\\\/\",\"name\":\"Cloudsurph Web Hosting Washington D.C.\",\"description\":\"Dedicated Server Hosting\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.cloudsurph.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.cloudsurph.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.cloudsurph.com\\\/#organization\",\"name\":\"CloudSurph Technology Solutions\",\"url\":\"https:\\\/\\\/www.cloudsurph.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.cloudsurph.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.cloudsurph.com\\\/wp-content\\\/uploads\\\/2016\\\/04\\\/cloudsurph-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.cloudsurph.com\\\/wp-content\\\/uploads\\\/2016\\\/04\\\/cloudsurph-logo.png\",\"width\":2348,\"height\":1692,\"caption\":\"CloudSurph Technology Solutions\"},\"image\":{\"@id\":\"https:\\\/\\\/www.cloudsurph.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/CloudSurph\\\/\",\"https:\\\/\\\/x.com\\\/Cloud_Surph\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.cloudsurph.com\\\/#\\\/schema\\\/person\\\/ac9b4dd136d96e50d5f29c560191e7ed\",\"name\":\"Rony\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/40163fe1eb49d5eddd81954e8ad5122633e141df15b0733d07fbe4a156688ba5?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/40163fe1eb49d5eddd81954e8ad5122633e141df15b0733d07fbe4a156688ba5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/40163fe1eb49d5eddd81954e8ad5122633e141df15b0733d07fbe4a156688ba5?s=96&d=mm&r=g\",\"caption\":\"Rony\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/cloudsurph\"],\"url\":\"https:\\\/\\\/www.cloudsurph.com\\\/author\\\/ron\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Defining the AdonisJS File Uploads Module","description":"Defining the AdonisJS File Uploads Module, A file upload module built for AdonisJS, and How to Manage File Uploads and Validate AdonisJS","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.cloudsurph.com\/defining-the-adonisjs-file-uploads-module\/","og_locale":"en_US","og_type":"article","og_title":"Defining the AdonisJS File Uploads Module","og_description":"Defining the AdonisJS File Uploads Module, A file upload module built for AdonisJS, and How to Manage File Uploads and Validate AdonisJS","og_url":"https:\/\/www.cloudsurph.com\/defining-the-adonisjs-file-uploads-module\/","og_site_name":"Cloudsurph Web Hosting Washington D.C.","article_publisher":"https:\/\/www.facebook.com\/CloudSurph\/","article_published_time":"2022-10-11T17:36:34+00:00","article_modified_time":"2022-10-11T17:36:55+00:00","og_image":[{"width":1264,"height":760,"url":"https:\/\/www.cloudsurph.com\/wp-content\/uploads\/2022\/10\/Defining-the-AdonisJS-File-uploads-Module.jpg","type":"image\/jpeg"}],"author":"Rony","twitter_card":"summary_large_image","twitter_creator":"@cloudsurph","twitter_site":"@Cloud_Surph","twitter_misc":{"Written by":"Rony","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.cloudsurph.com\/defining-the-adonisjs-file-uploads-module\/#article","isPartOf":{"@id":"https:\/\/www.cloudsurph.com\/defining-the-adonisjs-file-uploads-module\/"},"author":{"name":"Rony","@id":"https:\/\/www.cloudsurph.com\/#\/schema\/person\/ac9b4dd136d96e50d5f29c560191e7ed"},"headline":"AdonisJS: File Uploads","datePublished":"2022-10-11T17:36:34+00:00","dateModified":"2022-10-11T17:36:55+00:00","mainEntityOfPage":{"@id":"https:\/\/www.cloudsurph.com\/defining-the-adonisjs-file-uploads-module\/"},"wordCount":428,"publisher":{"@id":"https:\/\/www.cloudsurph.com\/#organization"},"image":{"@id":"https:\/\/www.cloudsurph.com\/defining-the-adonisjs-file-uploads-module\/#primaryimage"},"thumbnailUrl":"https:\/\/www.cloudsurph.com\/wp-content\/uploads\/2022\/10\/Defining-the-AdonisJS-File-uploads-Module.jpg","keywords":["Best VPS hosting server Maryland","Cheap Cloud Servers","Cheap Storage Server Hosting","Cheapest VPS","Dedicated Server Hosting in Washington D.C","Speed test VPS"],"articleSection":["AdonisJS","CentOS 7","Cloud Hosting","Linux Basics","Linux Server","React Js","Virtualization","VPS Servers"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.cloudsurph.com\/defining-the-adonisjs-file-uploads-module\/","url":"https:\/\/www.cloudsurph.com\/defining-the-adonisjs-file-uploads-module\/","name":"Defining the AdonisJS File Uploads Module","isPartOf":{"@id":"https:\/\/www.cloudsurph.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.cloudsurph.com\/defining-the-adonisjs-file-uploads-module\/#primaryimage"},"image":{"@id":"https:\/\/www.cloudsurph.com\/defining-the-adonisjs-file-uploads-module\/#primaryimage"},"thumbnailUrl":"https:\/\/www.cloudsurph.com\/wp-content\/uploads\/2022\/10\/Defining-the-AdonisJS-File-uploads-Module.jpg","datePublished":"2022-10-11T17:36:34+00:00","dateModified":"2022-10-11T17:36:55+00:00","description":"Defining the AdonisJS File Uploads Module, A file upload module built for AdonisJS, and How to Manage File Uploads and Validate AdonisJS","breadcrumb":{"@id":"https:\/\/www.cloudsurph.com\/defining-the-adonisjs-file-uploads-module\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.cloudsurph.com\/defining-the-adonisjs-file-uploads-module\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.cloudsurph.com\/defining-the-adonisjs-file-uploads-module\/#primaryimage","url":"https:\/\/www.cloudsurph.com\/wp-content\/uploads\/2022\/10\/Defining-the-AdonisJS-File-uploads-Module.jpg","contentUrl":"https:\/\/www.cloudsurph.com\/wp-content\/uploads\/2022\/10\/Defining-the-AdonisJS-File-uploads-Module.jpg","width":1264,"height":760,"caption":"Defining the AdonisJS File uploads Module"},{"@type":"BreadcrumbList","@id":"https:\/\/www.cloudsurph.com\/defining-the-adonisjs-file-uploads-module\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.cloudsurph.com\/"},{"@type":"ListItem","position":2,"name":"AdonisJS: File Uploads"}]},{"@type":"WebSite","@id":"https:\/\/www.cloudsurph.com\/#website","url":"https:\/\/www.cloudsurph.com\/","name":"Cloudsurph Web Hosting Washington D.C.","description":"Dedicated Server Hosting","publisher":{"@id":"https:\/\/www.cloudsurph.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.cloudsurph.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.cloudsurph.com\/#organization","name":"CloudSurph Technology Solutions","url":"https:\/\/www.cloudsurph.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.cloudsurph.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.cloudsurph.com\/wp-content\/uploads\/2016\/04\/cloudsurph-logo.png","contentUrl":"https:\/\/www.cloudsurph.com\/wp-content\/uploads\/2016\/04\/cloudsurph-logo.png","width":2348,"height":1692,"caption":"CloudSurph Technology Solutions"},"image":{"@id":"https:\/\/www.cloudsurph.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/CloudSurph\/","https:\/\/x.com\/Cloud_Surph"]},{"@type":"Person","@id":"https:\/\/www.cloudsurph.com\/#\/schema\/person\/ac9b4dd136d96e50d5f29c560191e7ed","name":"Rony","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/40163fe1eb49d5eddd81954e8ad5122633e141df15b0733d07fbe4a156688ba5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/40163fe1eb49d5eddd81954e8ad5122633e141df15b0733d07fbe4a156688ba5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/40163fe1eb49d5eddd81954e8ad5122633e141df15b0733d07fbe4a156688ba5?s=96&d=mm&r=g","caption":"Rony"},"sameAs":["https:\/\/x.com\/cloudsurph"],"url":"https:\/\/www.cloudsurph.com\/author\/ron\/"}]}},"_links":{"self":[{"href":"https:\/\/www.cloudsurph.com\/wp-json\/wp\/v2\/posts\/5317","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cloudsurph.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cloudsurph.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cloudsurph.com\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cloudsurph.com\/wp-json\/wp\/v2\/comments?post=5317"}],"version-history":[{"count":1,"href":"https:\/\/www.cloudsurph.com\/wp-json\/wp\/v2\/posts\/5317\/revisions"}],"predecessor-version":[{"id":5319,"href":"https:\/\/www.cloudsurph.com\/wp-json\/wp\/v2\/posts\/5317\/revisions\/5319"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cloudsurph.com\/wp-json\/wp\/v2\/media\/5318"}],"wp:attachment":[{"href":"https:\/\/www.cloudsurph.com\/wp-json\/wp\/v2\/media?parent=5317"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cloudsurph.com\/wp-json\/wp\/v2\/categories?post=5317"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cloudsurph.com\/wp-json\/wp\/v2\/tags?post=5317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}