通过queryString上传文件/保存,无需文件上传控制

时间:2014-03-15 06:27:38

标签: c# javascript asp.net

在文件夹中上传/保存文件而不使用文件上传控制文件路径通过查询字符串发送,如下所示

JS代码

var xmlHttp1 = new XMLHttpRequest();
var URL = "../codePages/codePage1.aspx?imgName=http://maps.googleapis.com/maps/api/staticmap?center=34.08326024943277,74.79841209948063&zoom=21&size=550x450&maptype=roadmap&sensor=true";
xmlHttp1.open("POST", URL, true);
xmlHttp1.send();
xmlHttp1.onreadystatechange = function () {
    if (xmlHttp1.readyState == 4 && xmlHttp1.status == 200) {
    }
}

C#代码

string fileName = Path.GetFileName(Request.QueryString["imgName"].ToString());
string location = Server.MapPath("~/saveImages/") + fileName;
Request.Files[0].SaveAs(location);

2 个答案:

答案 0 :(得分:1)

替换它:

Server.MapPath("~/saveImages/") + fileName

有了这个:

Path.Combine(Server.MapPath("~/saveImages/") , fileName);

答案 1 :(得分:1)

查询字符串包含文件的路径名而不是文件内容。您必须阅读该文件,然后将其内容保存到该位置。

类似的东西:

string fileName = Path.GetFileName(Request.QueryString["imgName"].ToString());
string location = Path.Combine(Server.MapPath("~/saveImages/") , fileName);
string readText = File.ReadAllText(Request.QueryString["imgName"].ToString());
File.WriteAllText(location, readText);

请确保使用File.Exists(path)或类似内容进行正确的错误/异常处理。我没有测试过这段代码,但我认为这应该可行。

  

另请注意,Request.Files[0]包含使用文件上传控件上传的文件数据。

编辑:

您可以使用WebRequest之类的内容来读取网址中的数据。类似于:

var webRequest = WebRequest.Create(@"http://yourUrl");

using (var response = webRequest.GetResponse())
using(var content = response.GetResponseStream())
using(var reader = new StreamReader(content)){
    var strContent = reader.ReadToEnd();
}
  

请以此为出发点,而不是复制粘贴解决方案。