上传文件/保存通过queryString没有文件上传控制

本文关键字:文件 控制 queryString 保存 | 更新日期: 2023-09-27 17:50:18

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

<<p> JS代码/strong>
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);

上传文件/保存通过queryString没有文件上传控制

querystring包含文件的路径名,而不是文件内容。您必须读取该文件,然后将其内容保存到该位置。

类似:

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之类的东西从URL读取数据。类似于:

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();
}

请以此为起点,而不是作为复制粘贴的解决方案。

替换此语句:

Server.MapPath("~/saveImages/") + fileName
与这个:

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