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?
2 回答
好吧,这不是您所说的(网络服务:就像某些公司提供的服务,而不是您可以安装在计算机上的软件)
如果由其他人提供不是一个严格的要求,并且您可以安装在您的服务器上的代码对您来说可以正常工作,只要非常交钥匙,好吧,我已经编写了类似的代码来上传图像: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&filename=someimage.jpg" md5="52c5e7013c61cbb8c74ddc390d83a0b5" filename="someimage.jpg" thumb="http://my-fileserver.com/view.php?file=user/pBfeP-thumb&filename=thumb-someimage.jpg"/>
该url
属性是您想要的文件 URL。
如果它必须是某个公司提供的服务,我想这不是你想要的,但是嘿,便宜的 php 托管真的很便宜,这样你就可以确定他们不会删除你的图像,并保留备份一切,等等。
是在 AGPL3 许可下发布的,所以检查一下,我希望它对你有用。
有点晚了,但也许它对其他人有用。
这个简单的代码使用匿名 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>