我尝试了不同的方法来上传和检索链接通过imgur,但没有成功,尽管看着imgur api. http://api.imgur.com/examples#uploading_java
但以下方法部分工作..我试图检索,
错误:如果发生任何错误.链接到图像:图像托管删除链接的链接:删除托管图像的链接
但我最终只有"删除链接",因为其他人是空白,检查出来:
public void post(String path) {
List<NameValuePair> postContent = new ArrayList<NameValuePair>(2);
postContent.add(new BasicNameValuePair("key", DEV_KEY));
postContent.add(new BasicNameValuePair("image", path));
String url = "http://api.imgur.com/2/upload";
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpPost httpPost = new HttpPost(url);
try {
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
for(int index=0; index < postContent.size(); index++) {
if(postContent.get(index).getName().equalsIgnoreCase("image")) {
// If the key equals to "image", we use FileBody to transfer the data
entity.addPart(postContent.get(index).getName(), new FileBody(new File (postContent.get(index).getValue())));
} else {
// …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试使用他们当前的API v3上传到imgur,但我不断收到错误
错误:javax.net.ssl.SSLException:证书中的主机名不匹配:api.imgur.com!= imgur.com或imgur.com
错误是非常自我解释的,所以我想我会尝试使用http而不是我得到错误代码400与imgur.我不确定这是否意味着我尝试上传是错误的还是Imgur不喜欢SSL连接.
下面是我连接到Imgur的代码模块:
public String Imgur (String imageDir, String clientID) {
//create needed strings
String address = "https://api.imgur.com/3/image";
//Create HTTPClient and post
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(address);
//create base64 image
BufferedImage image = null;
File file = new File(imageDir);
try {
//read image
image = ImageIO.read(file);
ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
ImageIO.write(image, "png", byteArray);
byte[] byteImage = byteArray.toByteArray();
String dataImage = new Base64().encodeAsString(byteImage);
//add header
post.addHeader("Authorization", "Client-ID" + clientID);
//add image
List<NameValuePair> …Run Code Online (Sandbox Code Playgroud) 我正要问一个关于 JSFiddle 的问题,我注意到图像(我在 Imgur 上得到的)没有出现。如果我直接在浏览器中加载图像,然后重新加载小提琴,图片就会显示出来,但如果您尚未加载图片,它们将不会显示。有没有办法解决这个问题?或者我只需要在不同的网站上托管图片?
这是小提琴的链接:http : //jsfiddle.net/r4crr/3/
这里有一些来自小提琴的愚蠢代码,它看起来实际上无关紧要。
<div id="makeJSFshowPics">
<img src="http://i.imgur.com/7ftvzYB.png" alt="High Interest"><img src="http://i.imgur.com/u8i9Coo.png" alt="Okay I guess"><img src="http://i.imgur.com/v66NbIR.png" alt="Do Not Want">
Run Code Online (Sandbox Code Playgroud)
首先,抱歉,因为这是一个相当狭窄的主题,所以我理解它是否被删除。Imgur 链接有多种格式,如下所示:
http://i.imgur.com/kMoI9Vn.jpg
http://i.imgur.com/f7VXJQF
http://imgur.com/S1dZBPm
http://imgur.com/a/liD3a
http://imgur.com/gallery/HFoOCeg
Run Code Online (Sandbox Code Playgroud)
在 Imgur API 文档中,有两个相关的端点。一个用于相册,另一个用于图像。通常,区分图像和相册没有问题,因为相册 URL 前缀为/a/。
但是,以下都是有效的画廊 URL:
http://imgur.com/gallery/HFoOCeg
http://imgur.com/gallery/clWTb
Run Code Online (Sandbox Code Playgroud)
第一个是图像,第二个是相册。图库类别有两个相关端点:image和album。尝试使用向图像端点提交相册请求(反之亦然)会导致 404 错误。
仅提供 ID(例如:)时,有什么方法HFoOCeg可以确定它是相册还是图像而不发送多个请求吗?
我正在尝试创建一个相册并使用imgurpython将图像上传到其中。但是,我无法将图像附加到相册中。它给了我以下错误:(403) The album you're requesting does not belong to your account。以下是我的代码:
client = ImgurClient(client_id, client_secret)
def CreateAlbumAndUploadImages(albumName,albumDescription,images):
fields = {}
fields['title'] = albumName
fields['description'] = albumDescription
fields['privacy'] = 'public'
x = client.create_album(fields)
print(x)
y = client.album_add_images(x['id'],images) #error here
print(y)
return x
def UploadPhoto(images):
config = {
'name': 'some image name here',
'title': 'some title here',
'description': 'some description here'}
image = client.upload_from_path(image_path, config=config, anon=False)
print("Done")
print(image)
return image
def main():
#x = CreateAlbum('Album 101','Album 101 desciption')
id …Run Code Online (Sandbox Code Playgroud) 这是我第一次使用这个网站,但是我已经用尽了大部分资源来寻找答案.我正在教自己如何编程,而且我被困在我的第一个API项目上.
作为总体目标,我想建立一个网站,允许您输入特定标准并搜索所有imgur的壁纸.只是为了在我的投资组合上有一个API项目.
为了达到这个目标,我已经着手从图库中提取符合我搜索条件的图像.毕竟,如果我能够成功搜索图像,那么我可以将其缩小到我的总体目标的细节.
这是我遇到问题的地方.我能够从API中获取所有链接,但这包括专辑链接,这些链接将会中断,因为它们不是真正的图像只是它们的存储库.
我一直试图拉动画廊图像和专辑图像,或只是一个然后另一个,但我似乎已经撞墙了.下面的链接不仅显示了我的代码,还显示了他们的JSON数据样本以及来自console.log的结果,我确实显示了搜索结果.
另外,我已经为这个项目添加了我的codepen,以防你想在那里玩它.
感谢您提供任何帮助.
https://codepen.io/digitalvillainy/pen/xLdGyq?editors=0011
$(document).ready(function() {
$('form').submit(function(evt) {
evt.preventDefault();
var $searchField = $('#Search');
var $submitButton = $('#Submit');
//captures searchfield value
var tagValue = $searchField.val();
var queryURL = "https://api.imgur.com/3/gallery/search/{{sort}}/{{window}}/{{page}}?q_type=jpg&q=" + tagValue + "";
//Settings for Request
var settings = {
"async": true,
"crossDomain": true,
"url": queryURL,
"method": "GET",
"headers": {
"authorization": "Client-ID 65a5c1418e8d1fb"
}
}
//Retrieving data from Ajax
$.ajax(settings).done(function(response) {
var photoHTML = '<ul>';
//Loop through JSON data
$.each(response.data, function(i, images) {
photoHTML += '<li>'; …Run Code Online (Sandbox Code Playgroud) 我每半小时上传 12 张图片到 imgur。
但是遇到这个问题。
Imgur 错误消息: {'exception': [], 'code': 429, 'type': 'ImgurException', 'message': '你上传得太快了。请再等 -0 分钟。'}
我不明白为什么是 -0 分钟。我想我达到了我的速率限制,所以尝试查看我的速率限制。但看起来很正常。
{
"data": {
"UserLimit": 2000,
"UserRemaining": 2000,
"UserReset": 1521378886,
"ClientLimit": 12500,
"ClientRemaining": 12500
},
"success": true,
"status": 200
}
Run Code Online (Sandbox Code Playgroud)
我在同一个 CLIENTID 的不同机器上尝试,上传功能工作正常。
我的IP被imgur禁止了吗?他们什么时候会释放我的IP?
更新:
我发现每个 IP imgur 都会对待不同的用户。但是我的机器 curl 归功于 api。响应看起来不错。
curl --request GET \
--url 'https://api.imgur.com/3/credits' \
--header 'Authorization: Client-ID xxx'
{"data":{"UserLimit":500,"UserRemaining":497,"UserReset":1521394842,"ClientLimit":12500,"ClientRemaining":12457},"success":true,"status":200}?
Run Code Online (Sandbox Code Playgroud)
当我运行上传图像时。还是会显示
Imgur 错误消息:{'消息':'您上传得太快了。请再等 -0 分钟。', 'type': 'ImgurException', 'code': 429, 'exception': []}
但是,其他图像功能可以正常工作,例如获取图像。
我正在尝试使用 js(浏览器)将图像上传到 imgur 并收到 CORS 错误:
Access to XMLHttpRequest at 'https://api.imgur.com/3/upload' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Run Code Online (Sandbox Code Playgroud)
但预检请求包含Access-Control-Allow-Origin标头:

我缺少什么?这是因为access-control-allow-credentials设置为true?
我正在通过 Imgur API ( https://apidocs.imgur.com/ ) 上传图像,但我收到“请求过多”(err 429),即使前一个请求返回“X-Ratelimit-Userremaining=12500”。我的理解是我应该能够在达到速率限制之前进行发布。
调用: https: //api.imgur.com/3/upload 请求: "errors":[{"id":"","code":"429","status":"太多请求","detail ":"请求过多"}]
调用: https: //api.imgur.com/3/credits 请求:"UserLimit":500,"UserRemaining":500,"UserReset":1584717611,"ClientLimit":12500,"ClientRemaining":12500
它工作了5个多月。2020 年 2 月两次达到速率限制,此后无法上传图像。有人有解决办法吗?我的 imgur 用户已经开始紧张了。