0

The title says it all. I'm looking for a web service that allows you to upload via their API and then replies with the file URL. Is this something that exist?

4

2 回答 2

0

好吧,这不是您所说的(网络服务:就像某些公司提供的服务,而不是您可以安装在计算机上的软件)

如果由其他人提供不是一个严格的要求,并且您可以安装在您的服务器上的代码对您来说可以正常工作,只要非常交钥匙,好吧,我已经编写了类似的代码来上传图像:https ://github.com/chris-l/urImgAPI

它使用 RESTful API,并使用 PHP 编码(因此可以在任何廉价主机上使用)。

我创建了这个 API 来上传图片,但它可以很容易地更改为上传任何类型的文件。(只是删除 gd 图像处理的东西)

该 API 具有安全功能,可通过要求签名来防止随机人将内容保存在您的服务器上。签名的工作方式如下:(此示例行位于 php 上)

$signature = md5(md5sum(your_image_file) . "your secret key");

您永远不会传输密钥明文,只会传输生成的签名。

恕我直言,非常容易使用。我在终端上这样使用它:

在我的.zshrc文件中,我有这个功能:(但如果你愿意,你可以把它变成一个 bash 脚本,或者其他什么)

uploadpic() {
   signature=`echo -n "$(md5sum $1|awk '{print $1}')"my_secret_key|md5sum|awk '{print $1}'`
   curl http://my-fileserver.com/upload.php -F image=@$1 -F signature=$signature -F user=user -F filename=$1
}

有了它,我只需执行以下操作即可上传图像:

$ uploadpic someimage.jpg

然后我得到一个 XML 答案,就像这样:

<response success="true" url="http://my-fileserver.com/view.php?file=user/pBfeP&amp;filename=someimage.jpg" md5="52c5e7013c61cbb8c74ddc390d83a0b5" filename="someimage.jpg" thumb="http://my-fileserver.com/view.php?file=user/pBfeP-thumb&amp;filename=thumb-someimage.jpg"/>

url属性是您想要的文件 URL。

如果它必须是某个公司提供的服务,我想这不是你想要的,但是嘿,便宜的 php 托管真的很便宜,这样你就可以确定他们不会删除你的图像,并保留备份一切,等等。

是在 AGPL3 许可下发布的,所以检查一下,我希望它对你有用。

于 2013-08-13T23:52:05.097 回答
0

有点晚了,但也许它对其他人有用。

这个简单的代码使用匿名 api 密钥将图像上传到 Imgur。(如果您决定使用它,请创建自己的密钥)

Copy/paste the link when it is uploaded if you can't see the image.
<br><br>
<div>DROP!<button onclick="document.querySelector('input').click()">Or click</button></div>
<input style="visibility: collapse; width: 0px;" type="file" onchange="upload(this.files[0])">

<p>Uploading...</p>
<a id="link">It's online!!!</a>


<style>
    body {text-align: center; padding-top: 100px;}
    div { border: 10px solid black; text-align: center; line-height: 100px; width: 200px; margin: auto; font-size: 40px; display: inline-block;}
    #link, p , div {display: none}
    div {display: inline-block;}
    .uploading div {display: none}
    .uploaded div {display: none}
    .uploading p {display: inline}
    .uploaded #link {display: inline}
    em {position: absolute; bottom: 0; right: 0}
</style>

<script>

    /* Drag'n drop stuff */
    window.ondragover = function(e) {e.preventDefault()}
    window.ondrop = function(e) {e.preventDefault(); upload(e.dataTransfer.files[0]); }
    function upload(file) {


        if (!file || !file.type.match(/image.*/)) return;
        document.body.className = "uploading";


        var fd = new FormData(); 
        fd.append("image", file); 
        var xhr = new XMLHttpRequest();
        xhr.open("POST", "https://api.imgur.com/3/image.json");
        xhr.onload = function() {
            document.querySelector("#link").href = JSON.parse(xhr.responseText).data.link;
            document.body.className = "uploaded";
        }
        
        xhr.setRequestHeader('Authorization', 'Client-ID 14a7704c52e4b75'); /* Please make a new key if you decide on using this */
        
        xhr.send(fd);
    }
</script>

http://codepen.io/drduval/pen/jqeygE

于 2016-04-28T11:54:05.377 回答