asp中图片替换,求解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp中图片替换,求解相关的知识,希望对你有一定的参考价值。

<div class="logo_left"><a href="<%=htmldns%>"><img src="<%=Htmldns%>images/logo.gif" alt="<%=Application(SiteID & "_Ok3w_SiteTitle")%>" border="0" /></a></div>

想把logo.gif替换成logo1.gif,结果图片无法显示,求高手解疑·····

图片要放在同一个文件夹,名字也要改为logo1.gif
代码也要改一下
<div class="logo_left"><a href="<%=Htmldns%>"><img src="<%=Htmldns%>images/logo1.gif" _Ok3w_SiteTitle")%>" border="0" /></a></div>追问

我把图片的名字改为logo1.asp,然后把代码上面的logo.asp也加了1,变成logo1.asp,但是还是无法显示,是不是哪里出错了??还是说,logo不允许我这么改···

追答

你看一下这个输出的HTML代码是什么就知道
我怀疑你后台有上传的地方,地址保存进数据库的,如果是这样的话,这里
images/logo.gif"就得改为
>">"
主要是不知道这是什么

追问

高手看看代码

追答

你这图片输出的是images/logo1.gif"
还是images/logo.gif"的?
带1还是不带1?
要不你就直接这样
">" border="0" />

追问

我之前就把源代码
">images/logo.gif" border="0" />

里头的logo.gif文件改为logo1.gif,把我要换上去的图片改为logo.gif,结果无法显示···是不是说源代码里给图片已经做了属性设置,使得我不可更改?

追答

="images/logo.gif
这里,首先你要弄清楚,images/是路径 /后面才是图片名称!

你说"里头的logo.gif文件改为logo1.gif,把我要换上去的图片改为logo.gif"这怎么可以打开?
你听我的
图片名称改为 logo1.gif

代码改为:
">images/logo1.gif" border="0" />

实在不行,代码就改成:
">" border="0" />

参考技术A 必须把图片放在和logo.gif同样的位置,即images文件夹下才可以 或者更改图片的路径本回答被提问者采纳

ASP.NET Core 修改/替换请求正文

【中文标题】ASP.NET Core 修改/替换请求正文【英文标题】:ASP.NET Core modify/substitute request body 【发布时间】:2017-11-13 21:24:58 【问题描述】:

我想对 HttpContext.Request.Body 进行替换。

我已经尝试在中间件中做到这一点:

public async Task Invoke(HttpContext context)

    if (context.Request.Path.Value.Contains("DataSourceResult"))
    
        var originalBody = new StreamReader(context.Request.Body).ReadToEnd();
        DataSourceRequest dataSource = null;

        try
        
            dataSource = JsonConvert.DeserializeObject<DataSourceRequest>(originalBody);
         catch
        
            await _next.Invoke(context);
        

        if (dataSource != null && dataSource.Take > 2000)
        
            dataSource.Take = 2000;

            var bytesToWrite = dataSource.AsByteArray();
            await context.Request.Body.WriteAsync(bytesToWrite, 0, bytesToWrite.Length);
        
        else
        
            var bytesToWrite = originalBody.AsByteArray();
            await context.Request.Body.WriteAsync(bytesToWrite, 0, bytesToWrite.Length);
        
    

    await _next.Invoke(context);

第一个问题是body只能读取一次,其次stream是只读的,不能写入。

如何修改/替换Request.Body?我需要更改请求正文的属性值。

【问题讨论】:

【参考方案1】:

获取请求正文,读取其内容,进行必要的更改(如果有的话),然后创建一个新流以沿管道传递。一旦访问,请求流必须被替换。

public async Task Invoke(HttpContext context) 
    var request = context.Request;
    if (request.Path.Value.Contains("DataSourceResult")) 
        //get the request body and put it back for the downstream items to read
        var stream = request.Body;// currently holds the original stream                    
        var originalContent = new StreamReader(stream).ReadToEnd();
        var notModified = true;
        try 
            var dataSource = JsonConvert.DeserializeObject<DataSourceRequest>(originalContent);
            if (dataSource != null && dataSource.Take > 2000) 
                dataSource.Take = 2000;
                var json = JsonConvert.SerializeObject(dataSource);
                //replace request stream to downstream handlers
                var requestContent = new StringContent(json, Encoding.UTF8, "application/json");
                stream = await requestContent.ReadAsStreamAsync();//modified stream
                notModified = false;
            
         catch 
            //No-op or log error
        
        if (notModified) 
            //put original data back for the downstream to read
            var requestData = Encoding.UTF8.GetBytes(originalContent);
            stream = new MemoryStream(requestData);
        

        request.Body = stream;
    
    await _next.Invoke(context);

【讨论】:

我们不是也需要修改Request.ContentLength吗?我们需要Dispose()原来的Request.Body吗? @Pang 从流中提取内容长度。无需手动更改。由于中间件管道的设计方式的性质,不建议将其丢弃,因为它可能会影响链/管道中的其他中间件。 为什么需要if (notModified) 块。如果notModifiedtruerequest.Body 将保持不变,不是吗? @SateeshPagolu 因为之前的代码块可能会修改流,所以将notModified 更改为false。阅读代码中的 cmets。【参考方案2】:

就我而言,还需要将 Request.ContentLength 更新为新值。 我的解决方案是:

string originalContent;
using (StreamReader stream = new StreamReader(context.Request.Body))

    originalContent = stream.ReadToEnd();


var dataSource = JsonConvert.DeserializeObject<DataSourceRequest>(originalContent);
if (dataSource != null && dataSource.Take > 2000)
    dataSource.Take = 2000;

string json = JsonConvert.SerializeObject(dataSource);
var requestData = Encoding.UTF8.GetBytes(json);
context.Request.Body = new MemoryStream(requestData);
context.Request.ContentLength = context.Request.Body.Length;

【讨论】:

以上是关于asp中图片替换,求解的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 中母版页、用户控件中属性的调用、赋值方法求解。

替换法(代入法)求解递归式

asp.net web.Config 配置httpHandlers无效 求解,在线等!

通过替换求解递归 T(n) = 2T(n/2) + Θ(1)

Pdf转换成word添加图片无法显示,求解?

全排列 (递归求解+字典序) java 转载