更改IIS Express查找文件的目录(c#, jquery $.ajax和KendoUI)

本文关键字:jquery ajax KendoUI 查找 Express IIS 文件 更改 | 更新日期: 2023-09-27 18:12:50

我想找到一种方法,以便我可以选择IIS Express查找文件的目录,这些文件将稍后通过web服务通过$进行处理。ajax调用。例如

$.ajax({
  url: destination.url,
  data: {file: myfile},
  type: "post",
  success: function(json) {
     [...]
  },
  error:function (xhr, ajaxOptions, thrownError) {
     [...]
  }
});

myfile变量的内容将作为file参数传递给web服务,但总是相对于IIS Express启动路径,在本例中C:'Program Files'IIS Express,更准确地说是C:'Program Files'IIS Express'myfile。我想设置某种baseURL,可以这么说,为了让IIS Express在我的应用程序路径内查找文件夹内的文件,例如C:'Users'me'myapp'my_files。只要有可能,我希望在每个应用程序的基础上做到这一点,并且我不想像这里建议的那样只是硬编码路径(因为我正在使用IIS Express的开发机器上工作,但应用程序将发布到运行IIS的服务器上)。任何帮助都将不胜感激。

更改IIS Express查找文件的目录(c#, jquery $.ajax和KendoUI)

你必须在你的站点后面选择一些位置来存放临时文件。每个应用程序的位置都应该改变。我将在下面的例子中使用temp:

public string GetPhysicalTempFolder()
{
    return AppDomain.CurrentDomain.BaseDirectory + @"Temp'";
}
private string GetVirtualTempFolder()
{
    //Returns ~/Temp/
    if (Url != null)                
        return System.Web.HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + Url.Content("~/Temp/");
    else
        return VirtualPathUtility.ToAbsolute("~/Temp/");
}

在你的上传控制器中,你需要将文件保存到你指定的位置

//---------------------------------------------------------------------------------------------------
public ActionResult UploadFile(IEnumerable<HttpPostedFileBase> files)
{
    try
     {
          // The Name of the Upload component is "files" 
          if (files == null || files.Count() == 0)
              throw new ArgumentException("No files defined");
          HttpPostedFileBase file = files.ToArray()[0];
          if (file.ContentLength > 10485760)
              throw new ArgumentException("File cannot exceed 10MB");
          file.InputStream.Position = 0;
          Byte[] destination = new Byte[file.ContentLength];
          file.InputStream.Read(destination, 0, file.ContentLength);
         //do something with destination here
     }
     catch (Exception e)
     {
         model.UploadError = e.Message;
     }
     return Json(model, JsonRequestBehavior.AllowGet);
 }