私はGAEにアプリを持っています:http://1.myawesomecity.appspot.com/
ご覧のとおり、ファイルを選択して[送信]をクリックすると、404になりますが、ファイルは実際に保存されます(大きすぎない限り、100kb未満)。最初のテキストフィールドには何も入力しないでください。
ファイルの投稿名は「myFile」です。
httppostを使用してAndroidアプリからファイルをアップロードしようとしています。
ユーザーがファイルを選択すると、そのディレクトリが取得され、myFileのnamevaluepairがファイルディレクトリに設定されます。次にhttpconnectionを実行しますが、ファイルがアップロードされません。
だから私の質問は..の違いは何ですか
ブラウザで「ファイルを選択」をクリックし、ファイルを選択するのではなく、namevaluepairのmyFileをファイルのディレクトリに割り当てます。
と
「送信」をクリックしてアップロードを開始するか、httpconnection.execute(httppost)を実行しますか?
違いがない場合は、ファイルをアップロードする必要があります。ファイルはアップロードされていないので、2つのプロセス(ブラウザーとhttppost)の違いを知っていると、ファイルがアップロードされない理由が明らかになるはずです。
私は次のことを確信しています:私のファイルディレクトリは正しいです。サーバー自体(ほとんど機能していませんが)は、PCのブラウザー、Androidエミュレーターのブラウザー、または実際のAndroidマシンのブラウザーのいずれからでも、ブラウザーを介したアップロードを許可します。Androidアプリのhttpconnectionが実行されています(httpconnectionを実行しても例外はスローされません)。
参考までに、サーバーはGAEのブロブストアを使用しています。
Androidコード:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url); //url is the app's site listed above
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("myFile", filename) ); //filename is the file's path
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
httpclient.execute(httppost);