2

我正在将图像从我的 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 服务时是否可以这样做?

4

1 回答 1

1

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

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

于 2013-05-02T04:22:35.530 回答