我正在将图像从我的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服务时是否可以执行此操作?
答案 0 :(得分:1)
由于图片上传是在新主题(JavascriptInterface)上执行的,因此您需要通过令牌或特定文件名以某种方式识别正在上传的图片。从中可以在文件上传后从MVC中“搜索”该文件。一旦捕获到文件已上传,它就可以使用HttpContext.User.Identity.Name
等将文件重命名或移动到您选择的指定文件夹中。
例如,我会创建一个随机字符串(ndNk3KasL.jpg),使用上传触发器传递它,并将文件命名为this。收到上传请求后,我会检查它是否是正确的文件名ndNk3KasL然后重命名/移动它(如果是)。