我正在将图像从我的 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]
添加到我的上传 Controller ,上传将无法进行,这进一步表明它没有使用登录信息。
从 Android 设备上传到 ASP.NET Web 服务时是否可以这样做?
最佳答案
由于图像上传是在新线程 (JavascriptInterface) 上执行的,因此您需要通过 token 或特定文件名 以某种方式识别正在上传的图像.文件上传后,您可以从这里“搜索”您的 MVC 中的文件。一旦发现文件已上传,它可能会使用 HttpContext.User.Identity.Name
等将文件重命名或移动到您选择的指定文件夹。
例如,我会创建一个随机字符串 (ndNk3KasL.jpg),将其与上传触发器一起传递,并将文件命名为该字符串。收到上传请求后,我会检查它是否是正确的文件名 ndNk3KasL,如果是,则重命名/移动它。
关于Android 到 ASP.NET 上传保存路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16137649/