我正在将我的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);
答案 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-mime4j,httpclient, 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。