<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Amjad Iqbal</title>
    <description>The latest articles on Forem by Amjad Iqbal (@amjadiqbal).</description>
    <link>https://forem.com/amjadiqbal</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F262035%2Ff607783e-8bbc-4bfb-a4f9-5df68c2928da.jpg</url>
      <title>Forem: Amjad Iqbal</title>
      <link>https://forem.com/amjadiqbal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/amjadiqbal"/>
    <language>en</language>
    <item>
      <title>New Filament Plugin: URL Image Uploader for Laravel Projects</title>
      <dc:creator>Amjad Iqbal</dc:creator>
      <pubDate>Sun, 23 Nov 2025 06:23:59 +0000</pubDate>
      <link>https://forem.com/amjadiqbal/new-filament-plugin-url-image-uploader-for-laravel-projects-4n0d</link>
      <guid>https://forem.com/amjadiqbal/new-filament-plugin-url-image-uploader-for-laravel-projects-4n0d</guid>
      <description>&lt;p&gt;Hey Laravel &amp;amp; Filament developers! 👋&lt;/p&gt;

&lt;p&gt;I'm excited to share my latest Filament plugin that solves a common challenge - &lt;strong&gt;importing images from URLs directly into your forms&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;The URL Image Uploader plugin allows you to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Upload images by pasting a URL (no file upload needed)&lt;/li&gt;
&lt;li&gt;Automatic image validation&lt;/li&gt;
&lt;li&gt;Live preview functionality&lt;/li&gt;
&lt;li&gt;Seamless Laravel storage integration&lt;/li&gt;
&lt;li&gt;Perfect for content management, e-commerce, and APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why I built this
&lt;/h2&gt;

&lt;p&gt;I was working on projects where I needed to import product images from suppliers' websites and external APIs. Manually downloading and re-uploading was tedious, so I created this plugin to streamline the workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;p&gt;✅ URL-based image uploads&lt;br&gt;
✅ Image validation (format, size)&lt;br&gt;
✅ Real-time preview&lt;br&gt;
✅ Laravel storage integration&lt;br&gt;
✅ Easy Filament form integration&lt;/p&gt;

&lt;h2&gt;
  
  
  Check it out
&lt;/h2&gt;

&lt;p&gt;🔗 Plugin page: &lt;a href="https://filamentphp.com/plugins/amjadiqbal-url-image-uploader" rel="noopener noreferrer"&gt;https://filamentphp.com/plugins/amjadiqbal-url-image-uploader&lt;/a&gt;&lt;br&gt;
📦 Packagist: &lt;a href="https://packagist.org/packages/amjadiqbal/filament-url-image-uploader" rel="noopener noreferrer"&gt;https://packagist.org/packages/amjadiqbal/filament-url-image-uploader&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Use cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;E-commerce product imports&lt;/li&gt;
&lt;li&gt;Content management from external sources&lt;/li&gt;
&lt;li&gt;API-driven image imports&lt;/li&gt;
&lt;li&gt;Bulk image processing&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Feedback welcome!
&lt;/h2&gt;

&lt;p&gt;I'd love to hear your thoughts, use cases, or feature suggestions. Feel free to drop a comment or DM me if you need help integrating it or have custom Filament development needs!&lt;/p&gt;

&lt;p&gt;Happy coding! 🚀&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>php</category>
      <category>filament</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What Every Developer Should Know About AI in 2025</title>
      <dc:creator>Amjad Iqbal</dc:creator>
      <pubDate>Fri, 10 Oct 2025 20:27:58 +0000</pubDate>
      <link>https://forem.com/amjadiqbal/what-every-developer-should-know-about-ai-in-2025-3l5g</link>
      <guid>https://forem.com/amjadiqbal/what-every-developer-should-know-about-ai-in-2025-3l5g</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhy81t9oixgh353hwyi3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhy81t9oixgh353hwyi3.png" alt="What Every Developer Should Know About AI in 2025" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🧩 Introduction
&lt;/h3&gt;

&lt;p&gt;2025 isn’t just another year for AI — it’s the year developers truly integrate AI into their daily workflow.&lt;br&gt;
Whether you’re a backend engineer, frontend wizard, or full-stack dev, AI is no longer optional — it’s part of the stack.&lt;/p&gt;

&lt;p&gt;But staying ahead isn’t about chasing hype.&lt;br&gt;
It’s about understanding &lt;strong&gt;how AI actually changes development&lt;/strong&gt; — from your IDE to your deployment pipeline.&lt;/p&gt;

&lt;p&gt;Let’s break down what every developer should know this year.&lt;/p&gt;




&lt;h3&gt;
  
  
  ⚙️ 1. AI Has Moved From Code Generation to Code Understanding
&lt;/h3&gt;

&lt;p&gt;In 2023–2024, AI tools like Copilot and ChatGPT could generate code snippets.&lt;br&gt;
In 2025, they &lt;strong&gt;understand context&lt;/strong&gt;, meaning they can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Detect bugs before you commit&lt;/li&gt;
&lt;li&gt;Suggest architectural patterns&lt;/li&gt;
&lt;li&gt;Review pull requests intelligently&lt;/li&gt;
&lt;li&gt;Learn from your repo and adapt over time&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;🧩 &lt;strong&gt;Tip:&lt;/strong&gt; Tools like &lt;strong&gt;GitHub Copilot X&lt;/strong&gt;, &lt;strong&gt;Cursor&lt;/strong&gt;, and &lt;strong&gt;Cody AI&lt;/strong&gt; now offer semantic search over your codebase.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is changing how teams handle reviews and knowledge sharing.&lt;/p&gt;




&lt;h3&gt;
  
  
  ⚡ 2. The Rise of AI Agents
&lt;/h3&gt;

&lt;p&gt;Instead of single responses, we now have &lt;strong&gt;autonomous agents&lt;/strong&gt; — AI systems that can plan, execute, and iterate tasks.&lt;br&gt;
Frameworks like &lt;strong&gt;LangChain&lt;/strong&gt;, &lt;strong&gt;AutoGen&lt;/strong&gt;, and &lt;strong&gt;CrewAI&lt;/strong&gt; let you chain multiple models that collaborate.&lt;/p&gt;

&lt;p&gt;Use-cases include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automated testing and debugging&lt;/li&gt;
&lt;li&gt;Intelligent API data analysis&lt;/li&gt;
&lt;li&gt;Continuous documentation updates&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Example: A “Docs Agent” can read your codebase, detect new functions, and auto-write README updates.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🧱 3. Local Models Are the Next Big Thing
&lt;/h3&gt;

&lt;p&gt;With privacy and performance concerns, &lt;strong&gt;local AI models&lt;/strong&gt; (SLMs) like &lt;strong&gt;Ollama&lt;/strong&gt;, &lt;strong&gt;Mistral&lt;/strong&gt;, and &lt;strong&gt;Llama 3&lt;/strong&gt; are gaining traction.&lt;/p&gt;

&lt;p&gt;You can now run:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chatbots offline&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embedding search&lt;/strong&gt; locally&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart autocomplete&lt;/strong&gt; inside VS Code&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 Combine Ollama + LangChain for full offline AI apps — no API keys, no data leaks.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🧠 4. AI-Powered Infrastructure
&lt;/h3&gt;

&lt;p&gt;DevOps isn’t untouched.&lt;br&gt;
AI now helps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitor performance anomalies&lt;/li&gt;
&lt;li&gt;Predict CI/CD pipeline failures&lt;/li&gt;
&lt;li&gt;Optimize cloud costs&lt;/li&gt;
&lt;li&gt;Auto-scale based on user behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Platforms like &lt;strong&gt;Datadog AI&lt;/strong&gt;, &lt;strong&gt;Prometheus ML&lt;/strong&gt;, and &lt;strong&gt;AWS Bedrock&lt;/strong&gt; are leading here.&lt;/p&gt;




&lt;h3&gt;
  
  
  🧩 5. Every Developer Should Learn Prompt Engineering Basics
&lt;/h3&gt;

&lt;p&gt;Prompting is the new debugging.&lt;br&gt;
Learning to communicate clearly with models is a 2025 essential skill.&lt;/p&gt;

&lt;p&gt;Three golden rules:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Be explicit (don’t assume model context)&lt;/li&gt;
&lt;li&gt;Give examples (few-shot prompting improves reliability)&lt;/li&gt;
&lt;li&gt;Iterate (treat AI like a junior dev — guide it)&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;🧠 Frameworks like &lt;strong&gt;PromptLayer&lt;/strong&gt; and &lt;strong&gt;LangFuse&lt;/strong&gt; can log, test, and optimize your prompts for reproducibility.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🔍 6. AI Is Now a Collaboration Layer
&lt;/h3&gt;

&lt;p&gt;Think of AI as part of your dev team:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It reviews your code&lt;/li&gt;
&lt;li&gt;Explains unfamiliar syntax&lt;/li&gt;
&lt;li&gt;Suggests library upgrades&lt;/li&gt;
&lt;li&gt;Helps plan releases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But remember: AI doesn’t replace judgment — it amplifies it.&lt;br&gt;
The best developers will be those who know &lt;strong&gt;how to work with AI&lt;/strong&gt;, not against it.&lt;/p&gt;




&lt;h3&gt;
  
  
  🚀 7. Where to Start
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Experiment with &lt;strong&gt;Ollama&lt;/strong&gt;, &lt;strong&gt;LangChain&lt;/strong&gt;, or &lt;strong&gt;Vercel AI SDK&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Integrate AI features into side projects&lt;/li&gt;
&lt;li&gt;Document and share your learnings publicly&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;🌱 You don’t need to build an AI company — just make your existing apps smarter.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🧭 Final Thoughts
&lt;/h3&gt;

&lt;p&gt;AI isn’t a buzzword anymore — it’s your new teammate.&lt;br&gt;
Whether it’s helping you debug, write docs, or architect your next big feature, your ability to &lt;strong&gt;collaborate with AI&lt;/strong&gt; will define your value as a developer in 2025.&lt;/p&gt;

&lt;p&gt;So — are you training your AI coworker yet?&lt;/p&gt;




&lt;h3&gt;
  
  
  💬 Call to Action
&lt;/h3&gt;

&lt;p&gt;If you found this helpful, drop a comment:&lt;br&gt;
👉 &lt;em&gt;What’s one AI tool you can’t live without as a developer right now?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let’s start a thread — I’ll reply to every comment.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎨 Image Prompts for the Article
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;th&gt;Prompt&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Header Image&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;“Minimal flat vector of a developer coding beside a glowing AI robot assistant, white background, pastel blue and purple tech tones, FilamentPHP-style aesthetic.”&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Section Divider&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;“Infographic showing code editor → AI model → output feedback loop, clean typography, white background.”&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Local Models Visual&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;“Laptop running small AI model locally with gears and chip icons, minimal flat design, pastel colors.”&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Collaboration Theme&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;“Developers and AI bots working together on code branches, connected by lines, futuristic but minimal.”&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>developer</category>
      <category>opensource</category>
    </item>
    <item>
      <title>URL Image Uploader for Filament — Upload from Anywhere in Seconds</title>
      <dc:creator>Amjad Iqbal</dc:creator>
      <pubDate>Fri, 10 Oct 2025 20:19:19 +0000</pubDate>
      <link>https://forem.com/amjadiqbal/url-image-uploader-for-filament-upload-from-anywhere-in-seconds-hfk</link>
      <guid>https://forem.com/amjadiqbal/url-image-uploader-for-filament-upload-from-anywhere-in-seconds-hfk</guid>
      <description>&lt;h3&gt;
  
  
  1. Introduction
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;URL Image Uploader&lt;/strong&gt; is a FilamentPHP plugin that allows you to upload images directly from a URL — no manual download or drag-and-drop needed.&lt;br&gt;
It integrates seamlessly into Filament forms, providing a quick and developer-friendly way to fetch remote images and store them in your configured filesystem (local, S3, etc.).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Package link:&lt;/strong&gt; &lt;a href="https://filamentphp.com/plugins/amjadiqbal-url-image-uploader" rel="noopener noreferrer"&gt;https://filamentphp.com/plugins/amjadiqbal-url-image-uploader&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Github link:&lt;/strong&gt; &lt;a href="https://github.com/amjadiqbal/filament-url-image-uploader" rel="noopener noreferrer"&gt;https://github.com/amjadiqbal/filament-url-image-uploader&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  2. Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🔗 Upload any image by just pasting a URL&lt;/li&gt;
&lt;li&gt;⚡ Works with all Filament form fields&lt;/li&gt;
&lt;li&gt;🪶 Supports local and cloud storage (like S3, DigitalOcean Spaces, etc.)&lt;/li&gt;
&lt;li&gt;🧩 Customizable validation rules and UI labels&lt;/li&gt;
&lt;li&gt;🧠 Built for Filament v3+ and Laravel 10+&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  3. Installation
&lt;/h3&gt;

&lt;p&gt;Run the following command in your Laravel project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;composer require amjadiqbal/url-image-uploader
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once installed, publish the config file if you want to customize defaults:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;php artisan vendor:publish &lt;span class="nt"&gt;--tag&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"url-image-uploader-config"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ll get a new config file at:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;config/url-image-uploader.php
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  4. Basic Usage
&lt;/h3&gt;

&lt;p&gt;You can use the field directly inside any Filament form:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;Amjadiqbal\UrlImageUploader\Forms\Components\UrlImageUploader&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nc"&gt;UrlImageUploader&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;make&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'image'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;label&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Upload from URL'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'uploads'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;disk&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'public'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;rules&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s1"&gt;'required'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'image'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'max:2048'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When the user pastes an image URL, the plugin automatically:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Downloads it to your configured disk.&lt;/li&gt;
&lt;li&gt;Stores it under the specified directory.&lt;/li&gt;
&lt;li&gt;Returns the file path relative to your disk.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  5. Advanced Configuration
&lt;/h3&gt;

&lt;p&gt;You can customize the behavior globally in your config file.&lt;/p&gt;

&lt;p&gt;Example &lt;code&gt;config/url-image-uploader.php&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="s1"&gt;'disk'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'public'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'directory'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'uploads/images'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'filename'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'random'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// options: 'original' or 'random'&lt;/span&gt;
    &lt;span class="s1"&gt;'max_size'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2048&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// in KB&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also override options per field:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nc"&gt;UrlImageUploader&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;make&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'avatar'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;disk&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'s3'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'avatars'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'original'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  6. Validation and Error Handling
&lt;/h3&gt;

&lt;p&gt;Laravel’s built-in validation integrates seamlessly.&lt;br&gt;
You can use standard image rules like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;rules&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s1"&gt;'image'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'mimes:jpeg,png,jpg,gif'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'max:4096'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the URL is invalid or not an image, the field automatically throws a Filament form validation error with a friendly message.&lt;/p&gt;




&lt;h3&gt;
  
  
  7. Integration Example
&lt;/h3&gt;

&lt;p&gt;A real-world example in a &lt;strong&gt;User Resource&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="c1"&gt;// app/Filament/Resources/UserResource.php&lt;/span&gt;

&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;Amjadiqbal\UrlImageUploader\Forms\Components\UrlImageUploader&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Form&lt;/span&gt; &lt;span class="nv"&gt;$form&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kt"&gt;Form&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$form&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;schema&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
        &lt;span class="nc"&gt;TextInput&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;make&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'name'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;required&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
        &lt;span class="nc"&gt;TextInput&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;make&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'email'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;email&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;required&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
        &lt;span class="nc"&gt;UrlImageUploader&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;make&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'profile_photo'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;label&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Profile Picture URL'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'users/profile_photos'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;disk&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'s3'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allows your admin users to paste a direct image link and have it automatically uploaded to S3.&lt;/p&gt;




&lt;h3&gt;
  
  
  8. Testing Locally
&lt;/h3&gt;

&lt;p&gt;To test uploads locally:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ensure your &lt;code&gt;FILESYSTEM_DISK=public&lt;/code&gt; in &lt;code&gt;.env&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Make sure &lt;code&gt;php artisan storage:link&lt;/code&gt; is set up.&lt;/li&gt;
&lt;li&gt;Paste a sample URL (like &lt;code&gt;https://picsum.photos/200/300&lt;/code&gt;) in your form.&lt;/li&gt;
&lt;li&gt;The image will appear instantly in your uploads directory.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  9. Deploying to Production
&lt;/h3&gt;

&lt;p&gt;If using S3 or another cloud service:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set up your disk credentials in &lt;code&gt;.env&lt;/code&gt;:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  FILESYSTEM_DISK=s3
  AWS_ACCESS_KEY_ID=your-key
  AWS_SECRET_ACCESS_KEY=your-secret
  AWS_DEFAULT_REGION=us-east-1
  AWS_BUCKET=your-bucket-name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Update your &lt;code&gt;config/filesystems.php&lt;/code&gt; accordingly.&lt;/li&gt;
&lt;li&gt;Clear and cache your config:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  php artisan config:cache
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s it — your app can now fetch and store remote images securely in production.&lt;/p&gt;




&lt;h3&gt;
  
  
  10. Conclusion
&lt;/h3&gt;

&lt;p&gt;This plugin simplifies one of the most common admin tasks: importing images from the web without manual uploads.&lt;br&gt;
Whether you’re building an image gallery, blog CMS, or eCommerce admin, the &lt;strong&gt;URL Image Uploader&lt;/strong&gt; saves both time and effort.&lt;/p&gt;

&lt;p&gt;If you find it useful, consider leaving a ⭐ on GitHub or supporting the author.&lt;/p&gt;

</description>
      <category>filament</category>
      <category>laravel</category>
      <category>php</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
