Upload a photo to Flickr from a URL

flickrupload

How can I upload a photo to Flickr from a URL?

Is this possible?

Best Answer

Update

Given your new specific question, there is no possibility from Flickr itself. I don't know the reason, but unless somebody finds a backdoor for that, you won't be able to do that.

You could of course (as a workaround) program an application that uses the Flickr API to fetch an image from an URL and upload it to Flickr. Wouldn't be that hard to do.

Maybe there is a Flickr App out there that does exactly that, but I wasn't able to find one (yet).


Why you can't do it

You can not upload a photo via an URL. You would have to pass the data of the photo within the URL, which is a HTTP GET Request:

Requests a representation of the specified resource. Requests using GET (and a few other HTTP methods) "SHOULD NOT have the significance of taking an action other than retrieval"

The problem is that you can't push all the data of a photo within an URL. There is always a limit of how much can be sent. The W3C says:

The content type "application/x-www-form-urlencoded" is inefficient for sending large quantities of binary data or text containing non-ASCII characters

And an image is just a huge amount of binary data. So, the following doesn't work:

http://flickr.com/upload/my-photo.jpeg
http://flickr.com/upload/photo=JhasHDUWCnsudNALWQNALDHOILJKASCjxid...

What you can do

In order to upload to Flickr, you need to upload the photo via a HTTP POST request. The photo's data will be embedded into this request. You would use a "multipart" form for this:

The content type "multipart/form-data" should be used for submitting forms that contain files, non-ASCII data, and binary data.

But that would mean you don't "see" the photo in the URL.

Flickr offers an API (a programming interface) that allows you to perform various actions, including downloading and uploading photos, finding users and their details, et cetera.

There is an example for uploading photos by HTTP POST. But be aware that you need to program your own application to make use of the API, for example in Python, Java or any other decent language with networking capabilities.