AndroidクライアントからPythonサーバーに画像を送信しようとしていますが、Pythonテストクライアントとサーバーでこれまでに達成しました。基本的に私のクライアントアプリケーションは、ユーザーの詳細と画像からなるフォームをとります。ユーザーが画像を選択すると、私はonActivityResultメソッドでURIを取得し、ユーザーのヒットは、送信アクティビティがフォームデータとしてで呼び出され、フォーム上のボタンを提出するときにソケットを使用して画像ファイルをPythonに送信
selectedImagePath = selectedImageUri.toString();
のような文字列にそれを解析しますそのようなバンドル内の配列に追加します。送信活動の
Bundle b=new Bundle(); b.putStringArray("regValues", new String[]{name,email,selectedImagePath});
私は、サーバーとの接続を確立し、そのように画像を送信しようとします。
` //これは、サーバに何の問題を接続しないサーバー
try{
//refer to the host computer's loopback interface
host = InetAddress.getByName("10.0.2.2");
link = new Socket(host,port);
in = new BufferedReader(new InputStreamReader(link.getInputStream()));
//access the strings that were passed to this activity
Bundle b = this.getIntent().getExtras();
String[] regFormValues = b.getStringArray("regValues");
//display connection confirmation
String message = in.readLine();
status.setText(message);
File myFile = new File (regFormValues[2]);
byte [] mybytearray = new byte [(int)myFile.length()];
FileInputStream fis = new FileInputStream(myFile);
BufferedInputStream bis = new BufferedInputStream(fis);
bis.read(mybytearray,0,mybytearray.length);
OutputStream os = link.getOutputStream();
os.write(mybytearray,0,mybytearray.length);
os.flush();
link.close();
}
catch(IOException e){
e.printStackTrace();
}
`
とのリンクを確立し、 サーバーは通常どおりにデータを書き込むために、出力用のファイルを作成しますが、それだけでなしので、空表示されますデータが受信されています。私はそれがクライアント側のファイルパスに問題があると思う。何か案は ?
編集:基本的に私は正しい方法で画像ファイルにアクセスしているのか、それともアクセスして送信するための良い提案があるのかを知りたいと思います。 tcpdumpの使用 -
私はクライアントに接続されたサーバーのメッセージを受け取っているので、これまでのところ、サーバー側で空のファイルが取得されています。サーバーはpythonクライアントを使用して送信しています画像を受信する。私はそれがクライアントのファイルと関係があると思う。 – Shpongle