我想找到一种方法,以便我可以选择IIS Express查找文件的目录,这些文件稍后将通过$ .ajax调用通过Web服务进行处理。 例如,
$.ajax({
url: destination.url,
data: {file: myfile},
type: "post",
success: function(json) {
[...]
},
error:function (xhr, ajaxOptions, thrownError) {
[...]
}
});
myfile 变量的内容将作为文件参数传递给Web服务,但始终相对于IIS Express启动路径,在本例中为 C:\ Program Files \ IIS Express ,更准确地说是 C:\ Program Files \ IIS Express \ myfile 。 我想设置一些baseURL,可以这么说,以便IIS Express在我的应用程序路径中的文件夹中查找文件,例如 C:\用户\我\ MYAPP \ my_files 。 只要有可能,我想在每个应用程序的基础上执行此操作,并且我不想仅按照建议here对路径进行硬编码(因为我正在使用IIS Express开发计算机,但应用程序将发布到运行IIS的服务器)。 任何帮助都感激不尽。提前谢谢。
答案 0 :(得分:0)
您必须选择站点后面的某个位置来存放临时文件。该位置应根据应用程序更改。我将在下面的例子中使用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);
}