2

Android から Web サーバーに画像をアップロードしています。私の Web サーバーは ASP.NET MVC で記述されています。

Android で HttpPost を使用して画像をアップロードし、次の php コードを使用できます。

$base=$_REQUEST['image'];
$binary=base64_decode($base);
header('Content-Type: bitmap; charset=utf-8');
$file = fopen('App_Data/Image.jpg', 'wb');
fwrite($file, $binary);
fclose($file);

私の質問は、これを ASP.NET MVC に変換することは可能ですか? ASP.NET で実行できる多くのことを実行する方法がわからないため、php の使用は非常に制限されていると感じています。

ASP.NET の Request メソッドについては理解していますが、base64_decode 部分の実行方法がわかりません。

PS。使用方法の詳細については、このリンクを参照してください。

編集:アンドロイド部分のコード

この部分はビットマップを変換し、base64 でエンコードします

Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().getAbsolutePath()+"/saved_images/2013-04-10--11-51-33-AEST--Fingerprint.jpg");          
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream); //compress to which format you want.
            byte [] byte_arr = stream.toByteArray();
            String image_str = Base64.encodeBytes(byte_arr);
            ArrayList<NameValuePair> nameValuePairs = new  ArrayList<NameValuePair>();
            nameValuePairs.add(new BasicNameValuePair("image",image_str));

この部分は投稿を行います

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://myipaddress/Up/Upload");
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = httpclient.execute(httppost);
4

2 に答える 2

1

次の例を使用するだけで、MVC でファイルをアップロードするのは驚くほど簡単です。

形:

<form action="controller\UploadImage" method="post" enctype="multipart/form-data">

  <label for="file">Filename:</label>
  <input type="file" name="file" id="file" />

  <input type="submit" />
</form>

enctype="multipart/form-data"ファイルのエンコードを有効にすることを忘れないでください。

そして、コントローラーでこれを行います:

[HttpPost]
public ActionResult UploadImage(HttpPostedFileBase file) {

  if (file.ContentLength > 0) {
    var fileName = Path.GetFileName(file.FileName);
    var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
    file.SaveAs(path);
  }

  return RedirectToAction("Index");
}

編集: 次のブログ投稿に基づく: http://blog.tacticalnuclearstrike.com/2010/01/using-multipartentity-in-android-applications/

Android アプリケーションからファイルをアップロードし、Multipart コンテンツ タイプを使用できるようにするには、アプリケーションにいくつかの追加の jar ファイルを追加する必要があります。

必要なファイルはapache-mime4jhttpclient 、 httpcore 、および httpmimeです。これらはすべて、Apache Foundation によって構築されたオープンソース プロジェクトです。

4 つのファイルをダウンロードしてプロジェクトに追加すると、次のコードを使用して文字列とファイルをページに投稿できるようになります。

コード例は次のとおりです。

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.tumblr.com/api/write");


try {
  MultipartEntity entity = new MultipartEntity();

  entity.addPart("type", new StringBody("photo"));
  entity.addPart("data", new FileBody(image));
  httppost.setEntity(entity);
  HttpResponse response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
} catch (IOException e) {
}

この場合の画像変数は、電話のカメラでキャプチャされた画像を含むファイルです。

于 2013-04-17T03:53:33.123 に答える