PHP到ASP.NET代码迁移

时间:2013-04-17 03:37:21

标签: android asp.net-mvc

我正在将我的Android图像上传到我的网络服务器。我的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?我觉得使用php非常有限,因为我不知道如何做一些我能在ASP.NET中做的事情。

我理解ASP.NET中的Request方法,但我不确定如何编写base64_decode部分。

PS。有关所用方法的详细信息,请参阅this link

编辑:Android部件代码

此部分转换位图,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);

2 个答案:

答案 0 :(得分:1)

在MVC中上传文件非常简单,只需使用此示例:

FORM:

<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应用程序上传文件并使用   您需要添加一些其他jar文件的Multipart内容类型   你的申请。

     

所需文件为apache-mime4jhttpclient, httpcore and httpmime。   所有这些都是由Apache基金会构建的开源项目。

     

下载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) {
}
  

在这种情况下,图像变量是包含图像的文件   在手机上通过相机拍摄。

答案 1 :(得分:1)

因为我使用的是base64编码方法,所以它不起作用。不得不改变我的攻击计划并使用this answer.

中显示的MultipartEntity方法

还必须下载apache-mime4j,httpclient,httpcore和httpmime。现在正在运作: - )

感谢你帮助Mortalus。