Android到ASP.NET上传Savepath

时间:2013-04-22 00:19:15

标签: android asp.net-mvc upload

我正在将图像从我的Android设备上传到我的ASP.NET MVC服务器。

我想使用的保存路径是 HttpContext.Server.MapPath("../") + "App_Data/" + HttpContext.User.Identity.Name + model.Firstname + "-" + model.Surname + "-" + System.IO.Path.GetFileName(Request.Files[0].FileName);

哪个应该给/App_Data/AccountName/firstname-surname-filename.jpg

当我在MVC中使用

执行此操作时,这对我有用
@Html.LabelFor(m => m.Firstname)
@Html.TextBoxFor(m => m.Firstname)            

@Html.LabelFor(m => m.Surname)
@Html.TextBoxFor(m => m.Surname)            

<label for="file1">Upload Image</label>
<input type="file" name="picture" id="picture" />      

<input type="submit"  />

为了从Android应用程序执行上传,我需要在MVC中使用javascript,如下所示

<script type="text/javascript">
function showAndroidToast(toast) 
{
    Android.showToast(toast);
}
</script> 
<input type="submit" value="Scan Fingerprint" onClick="showAndroidToast('Scanning fingerprint')" />'

showToast函数是我的android应用程序中的上传函数。

我可以从Android上传图像,但即使我已登录到我的ASP.NET应用程序,保存路径也不适用于我需要工作的HttpContext.User.Identity.Name。如果我也将[Authorize]添加到我的上传控制器,则上传将无效,这进一步表明它未使用登录信息。

从Android设备上传到ASP.NET Web服务时是否可以执行此操作?

1 个答案:

答案 0 :(得分:1)

由于图片上传是在新主题(JavascriptInterface)上执行的,因此您需要通过令牌特定文件名以某种方式识别正在上传的图片。从中可以在文件上传后从MVC中“搜索”该文件。一旦捕获到文件已上传,它就可以使用HttpContext.User.Identity.Name等将文件重命名或移动到您选择的指定文件夹中。

例如,我会创建一个随机字符串(ndNk3KasL.jpg),使用上传触发器传递它,并将文件命名为this。收到上传请求后,我会检查它是否是正确的文件名ndNk3KasL然后重命名/移动它(如果是)。