DEV Community

Thomas Bnt
Thomas Bnt Subscriber

Posted on • Edited on • Originally published at thomasbnt.dev

8 1

Custom domain for your images with ShareX

What is ShareX?

First, ShareX is an application available only on Windows.

ShareX application on Windows

It allows you to take screenshots and do whatever you want with them afterwards, for example copy the image to the clipboard, upload it to a remote server, or recognize text in the image (OCR).

ShareX application on Windows

Server side

To upload your images, you need to make it request on your server and especially on a file. There are many ways to do this, I opted for a PHP file.

In my upload.php file, I set the public URLs to https://i.thomasbnt.dev/i/.

<?php
$secret_key = "VotreTouteBelleCléPrivéePourUpload"; // The beautiful private key
$sharexdir = "i/"; // Your folder
$domain_url = 'https://i.thomasbnt.dev/'; // Your domain name
$lengthofstring = 5; // Width of your output file name. Example : ek6po.png

function RandomString($length) {
    $keys = array_merge(range(0,9), range('a', 'z'));

    $key = '';
    for($i=0; $i < $length; $i++) {
        $key .= $keys[mt_rand(0, count($keys) - 1)];
    }
    return $key;
}

if(isset($_POST['secret'])) {
    if($_POST['secret'] == $secret_key) {
        $filename = RandomString($lengthofstring);
        $target_file = $_FILES["sharex"]["name"];
        $fileType = pathinfo($target_file, PATHINFO_EXTENSION);

        if (move_uploaded_file($_FILES["sharex"]["tmp_name"], $sharexdir.$filename.'.'.$fileType)) {
            echo $domain_url.$sharexdir.$filename.'.'.$fileType;
        }
            else {
           echo 'File upload failed - CHMOD/Folder doesn\'t exist?';
        }
    }
    else {
        echo 'Invalid Secret Key';
    }
}
else {
    echo 'No post data recieved';
}
?>
Enter fullscreen mode Exit fullscreen mode

So I'm no good at PHP, I got this piece of code from the Internet (I don't know where exactly, so no source) and it works great. Be careful with the permissions of your folder. Make sure that it can be read and that the folder in question really exists.

You can read that you need a key, it acts as a password so that only you can upload to your server. If you don't want it, don't put anything.

Client side (ShareX)

On this side, after having correctly installed the application, you must make sure that when you make the screen, it is uploaded to the remote server. This option can be found in Destinations > Custom upload service settings...

Destinations > Custom upload service setting in ShareX

Then enter your values, like the domain name + folder in POST, your secret key, and don't forget to put 'sharex' for the name of the form file.

Custom upload service setting in ShareX

Test the settings, and if everything is good, congratulations! You now have your own image host.

Check my Twitter account. You can see many projects and updates. You can also support me on Buy Me a Coffee, Stripe or GitHub Sponsors. Thanks for read my post ! 🤩

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (2)

Collapse
 
warengonzaga profile image
Waren Gonzaga

Thanks @thomasbnt for making this tutorial!

Collapse
 
thomasbnt profile image
Thomas Bnt

Thanks for reading my post!

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up