ATTENTION: You are viewing a page formatted for mobile devices; to view the full web page, click HERE.

DonationCoder.com Software > Screenshot Captor

How to: upload screenshots to personal site (SFTP or FTP)

(1/1)

Vanav:
You have your own site and want to upload screenshots to it. This small article describes how to do it.

You will need:
– personal site or any hosting with SFTP or FTP access. For example: virtual private server with SSH or FTP access.
– install Cygwin (easy).

You will got: after you click "Upload image" in Screenshot Captor, image will be uploaded and URL will be copied to clipboard, e.g. http://files.example.com/screenshots/20120504_162348_591_nMFnu4un.png
You can upload image in different ways:
- Main menu: SendTo → Upload image file with Uploader tool.
- Tray icon: Upload last image.
- New screenshot popup after capture: Send to... → Upload image file with Uploader tool.
- Screenshot Captor floating toolbar: Select post-capture options and actions → [x] Upload screenshot.

Differences from ZUploader:
– ZUploader doesn't work for SFTP at all for me (as for v.5.5.0 r3030),
– random string is added to file name, so no one will be able to see your screenshots: you should give an exact link to it,
– screenshot is saved with single style of file naming: date_time_milliseconds_random.ext. This allows to order screenshots by date and resists to file name guessing.

I've tested three modes of upload (from most to less preferred):
1) upload using SFTP with public key,
2) upload using SFTP with password,
3) upload using FTP with password.
Some other upload protocols that are possible in "lftp" mode: FTPS, HTTP, HTTPS, HFTP, FISH, Torrent.

Steps for SFTP with public key

1. Run http://cygwin.com/setup.exe and install "openssh" in addition to base package. So you will have files "sftp.exe" and "date.exe" in folder "C:\Cygwin\bin".
2. Create SSH keys without password (press Enter twice) that will allow you to upload files:

--- ---> C:\Cygwin\bin\ssh-keygen -b 2048 -f automatic_access
Copy two new files to directory: "C:\Cygwin\home\UserName\.ssh\". As a result you should got two files: "C:\Cygwin\home\UserName\.ssh\automatic_access" and "automatic_access.pub".
3. Copy public key file "automatic_access.pub" to server to file "~/.ssh/authorized_keys"
4. Test your setup:

--- ---> C:\Cygwin\bin\sftp -i ~/.ssh/automatic_access [email protected]
"username" is your login to server, "files.example.com" is your site domain.
You should got:

--- ---Connected to files.example.com
sftp>
Type "quit".

Example of server configuration:
– home directory of site: ~/ (e.g. /home/sites/files.example.com/)
– public ssh key: ~/.ssh/authorized_keys
– some directory for screenshots: http://files.example.com/screenshots/ matches to path on server ~/data/screenshots/
So, if you put file to ~/data/screenshots/screenshot.png you will be able to see it here: http://files.example.com/screenshots/screenshot.png

5. Update variables in upload.bat (file is below) to match your configuration:

--- ---set pathToCygwinBin=C:\Cygwin\bin
set urlPathPrefix=http://files.example.com/screenshots
set serverPathPrefix=/data/screenshots
set [email protected]
set uploadMode=sftp
set privateKey=~/.ssh/automatic_access

6. Main menu: Edit → Preferences → External Tools - Custom Uploader Tool: specify path to "upload.bat".
In same window: Online Uploading → (*) Use custom uploader.

Now command "Upload image" will upload screenshot to your site and will copy URL to it to clipboard.

Steps for SFTP with password

1. Run http://cygwin.com/setup.exe and install "lftp" in addition to base package. So you will have files "lftp.exe" and "date.exe" in folder "C:\Cygwin\bin".
2-4. Skip.
5. Update variables in upload.bat (file is below) to match your configuration:

--- ---set pathToCygwinBin=C:\Cygwin\bin
set urlPathPrefix=http://files.example.com/screenshots
set serverPathPrefix=/data/screenshots
set remoteServer=sftp://login:[email protected]
set uploadMode=lftp
(notice "uploadMode" variable is changed)

Steps for FTP with password

1. Run http://cygwin.com/setup.exe and install "lftp" in addition to base package. So you will have files "lftp.exe" and "date.exe" in folder "C:\Cygwin\bin".
2-4. Skip.
5. Update variables in "upload.bat" (file is below) to match your configuration:

--- ---set pathToCygwinBin=C:\Cygwin\bin
set urlPathPrefix=http://files.example.com/screenshots
set serverPathPrefix=/data/screenshots
set remoteServer=ftp://login:[email protected]
set uploadMode=lftp
(notice "uploadMode" variable is changed)

upload.bat:
Spoiler
--- Code: Text ---@echo off rem Depends on Cygwin: date, sftp (openssh) or lftp set pathToCygwinBin=C:\Cygwin\binset urlPathPrefix=http://files.example.com/screenshotsset serverPathPrefix=/data/screenshotsset [email protected] uploadMode=sftp for SFTP with public key or uploadMode=lftp in other cases.set uploadMode=sftpset privateKey=~/.ssh/automatic_access rem Don't warn about Windows path scheme.set CYGWIN=nodosfilewarning set source=%1 if exist %source% (    rem file exists) else (    echo Error: file %source% doesn't exist.    exit) rem Get full name of file.for /F "tokens=*" %%A in ('dir /L /B %source%') do set Variable=%%Arem Get file extension in lowercase.for %%i in ("%Variable%") do set sourceExt=%%~xi rem Generate random string.setlocal EnableDelayedExpansionset _RNDLength=8set _Alphanumeric=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789set _Str=%_Alphanumeric%987654321:_LenLoopif not "%_Str:~18%"=="" set _Str=%_Str:~9%& set /A _Len+=9& goto :_LenLoopset _tmp=%_Str:~9,1%set /A _Len=_Len+_tmpset _count=0set _RndAlphaNum=:_loopset /a _count+=1set _RND=%Random%set /A _RND=_RND%%%_Len%set _RndAlphaNum=!_RndAlphaNum!!_Alphanumeric:~%_RND%,1!if !_count! lss %_RNDLength% goto _loop rem Get current time.for /F "tokens=*" %%A in ('%pathToCygwinBin%\date +%%Y%%m%%d_%%H%%M%%S_%%N') do set Variable=%%Aset FileTime=%Variable:~0,19% rem Compose new file name.set NewName=%FileTime%_!_RndAlphaNum!!sourceExt!set destination="%serverPathPrefix%/!NewName!" set url=%urlPathPrefix%/!NewName!rem Copy to clipboard without new line and trailing space.<nul set /p any-variable-name="%url%"| clipecho Url %url% was copied to clipboard. rem Convert file path for Cygwin and add quotes.set source=%source:\=/%rem Remove existen quotes if any, and add quotes.set source="%source:"=%"rem Upload.if "%uploadMode%"=="sftp" (    echo put %source% %destination%| %pathToCygwinBin%\sftp -C -i %privateKey% %remoteServer%) else (    echo put %source% -o %destination%| %pathToCygwinBin%\lftp %remoteServer%)rem pause

mouser:
Thank you so much for sharing that Vanav!  :up:

I'll make it so you can change the text of the "zuploader" menu.

Note that you can also make "tool" files that serve the same purpose and can be triggered from Tool menu -- the only real advantage there is that you can make multiple tools instead of using the one zuploader "slot".

Vanav:
Updated instructions for Screenshot Captor v4 and fixed some minor bugs in script.

KynloStephen66515:
Updated instructions for Screenshot Captor v4 and fixed some minor bugs in script.
-Vanav (March 26, 2013, 05:18 PM)
--- End quote ---

+1 For all that info!

mouser:
Terrific.

Note that even if you don't want to use this tool as *the* "uploader" tool, you can still configure it in same exact way as an item in the tool menu.

(Maybe someone wants to make a self package with compiled binaries and an .sctool so it can just be downloaded and added to SC tools folder and is ready for use?)

Navigation

[0] Message Index

Go to full version