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,结果图片无法显示,求高手解疑·····
代码也要改一下
<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" />
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)
块。如果notModified
是true
,request.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无效 求解,在线等!