0
自分のAPIを使用してTwitterに画像をアップロードしようとしていますが、使用してから間違いなくファイルを見つけることができないというエラーが表示されません同じパスを他のネットワークに正常にアップロードし、プレビューボックスに正しく表示されます。APIを使用してTwitterに画像をアップロードできません
com.twitter.sdk.android.core.TwitterApiException: /-1/1/content:/media/external/images/media/100883/ORIGINAL/NONE/1159437588: open failed: ENOENT (No such file or directory)
W/System.err: at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:390)
W/System.err: at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220)
W/System.err: at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278)
W/System.err: at retrofit.CallbackRunnable.run(CallbackRunnable.java:42)
W/System.err: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
W/System.err: at java.lang.Thread.run(Thread.java:818)
いくつかのグーグルでは、このエラーは、Android向けのTwitter SDKの古いバージョンで修正されていることを意図して示し、人々はそれがあった確認しているが、それはしばらく前だったと私は最新バージョンを使用しています1.13.0
。
次のように私はこれをアップロードするために使用しているコードは次のとおりです。
//img = Uri passed from calling method
File photo = new File(img.getPath());
TypedFile typedFile = new TypedFile("application/octet-stream", photo);
TwitterApiClient twitterApiClient = TwitterCore.getInstance().getApiClient(twitSession);
MediaService mediaService = twitterApiClient.getMediaService();
final StatusesService statusesService = twitterApiClient.getStatusesService();
mediaService.upload(typedFile, null, null, new Callback<Media>() {
@Override
public void success(final Result<Media> result) {
statusesService.update(input, null, null, null, null,
null, null, null, result.data.mediaIdString, new Callback<Tweet>() {
@Override
public void success(Result<Tweet> result) {
Log.d("Twitter image callback", "Successfully posted image and text to Twitter!");
}
@Override
public void failure(TwitterException e) {
if (result != null) {
Log.e("Twitter image callback", "Result is - " + result.toString());
}
Log.d("Twitter image callback", "Failed to post image and text to Twitter!");
}
});
}
@Override
public void failure(TwitterException e) {
Log.d("Twitter image callback", "Failed to upload image to Twitter!");
e.printStackTrace();
}
});
誰もがここで何が悪かったのかを知っていると私はこの作業を取得することができるよどのようにしていますか?
これは、単純にファイルをアップロードすることは非常に複雑に見えます。私はこれが外部ライブラリ(TwitterApiClient)を使用しているかどうかはわかりませんが、そうでない場合は、チャンクごとに5MB未満をアップロードしていることを確認する必要があります。また、INIT、APPEND(バイナリで)およびENDを呼び出すMultiPartクエリを使用する必要があります。 – Linvi
C#を使用することができれば、書いたライブラリ([Tweetinvi](https://github.com/linvi/tweetinvi))をお勧めします。イメージを簡単に公開することができます: 'var media = Upload.UploadImage(File.ReadAllBytes( "path")); ' – Linvi