- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个从 SharePoint 2013 或 SharePoint 2010 中提取文件以在 HTML 中查看的应用程序。在 C# 中,文件从 SharePoint 中提取(多页文档,如 Word、Excel、PDF、TIFF 等),然后输入到各种第 3 方软件(DataLogics 和 Aspose)中,这些软件将文档分解为单独的页面,然后流式传输以 PNG 格式传输到浏览器的各个页面。
因此,在 HTML 中,我们有一个 img 元素,其 src 设置为 ASHX 服务中的特定 URL。 ASHX 服务从 SharePoint 中获取文件,并根据查询字符串参数,以流的形式返回所需的页面。
以下是我们如何反击:
[WebService(Namespace = "url")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class FileTransfer : IHttpHandler, IReadOnlySessionState
{
public void ProcessRequest(HttpContext context)
var stream = GetStream(context.Request);
int chunkSize = 2097152; //2MB
byte[] chunk = new byte[chunkSize];
int bytesRead = 0;
do {
bytesRead = stream.Read(chunk, 0, chunkSize);
HttpContext.Current.Response.OutputStream.Write(chunk, 0, bytesRead);
}
while (bytesRead > 0);
}
当我们分解的文件直接来自 SharePoint 时,这在任何浏览器中都 100% 完美运行。
我们还提供了用户可以上传文档的功能。这就是问题所在。上传的文档不会保存在 SharePoint 中。相反,它们的数据存储在 SessionState 中,直到用户选择保存。文件上传到 ASMX 服务,然后浏览器通过上述 ASHX 请求各个页面。
文件在 ASMX 服务中上传如下:
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
Public object Upload()
{
var request = HttpContext.Current.Request;
if (request.Files.Count == 1)
{
var uniqueId = request["uniqueId"];
var file = request.Files[0];
using (var memoryStream = new MemoryStream())
{
file.InputStream.CopyTo(memoryStream);
docInfo = UploadItem(uniqueId, pageNum, memoryStream.ToArray());
}
}
}
UploadItem 将 uniqueId 和 byte[] 添加到 SessionState。
文件是这样从 javascript 发送的(FileUpload 与 type=file 输入的更改事件绑定(bind)):
this.FileUpload = function (files) {
var upload = new XMLHttpRequest();
upload.onreadystatechange = () => {
if (this._curUploadRequest.readyState == 4) {
// handle response
}
};
UpdateFormDigest((<any>window)._spPageContextInfo.webServerRelativeUrl,(<any>window)._spFormDigestRefreshInterval);
var data = new FormData();
data.append("uniqueId", uniqueId);
data.append("pageNum", pageNum);
data.append("data", files[0]);
upload.open('POST', "myurl");
upload.setRequestHeader("X-RequestDigest", $("#__REQUESTDIGEST").val());
upload.send(data);
};
现在我们来看看实际的错误。
图像使用以下方式渲染:
<img src="url to ASHX service" />
在 FireFox 和 Chrome 中,上传文档中的页面图像始终显示得很好。但在 IE(9、10 或 11)中,它仅呈现其中的第一部分,然后在图像占位符上显示损坏的图像图标。对于这些损坏的图像,IE 的 NET 选项卡显示它收到了 0kb,并且发生了错误事件。但是,如果我在 ASHX 返回流之前在 ASHX 中放置一个断点,它总是有一个大小。
更有趣的是,如果你获取 src 指向的 url,打开一个新窗口并将其粘贴进去,图像就会正常显示。
我什至尝试先像这样在 JavaScript 中加载图像:
var img = new Image();
img.onload = function(){
// use jquery to append image to page
};
img.src = "url to ASHX service";
在这种情况下,Chrome 和 Firefox 工作正常,但 IE 再次出现故障。除此之外,IE 的 NET 选项卡显示它收到了正确大小的 kb 响应。但是,它仍然显示损坏的图像图标,并且在某个未知阈值后不会将图像渲染到屏幕上。前几张图像会恢复,但一旦其中一张损坏,其余所有图像都会损坏。
我还修改了ASHX服务以返回base64数据而不是流,然后将base64绑定(bind)到src。在调试器中,您可以看到分配给显示损坏图像图标的 img 元素的 src 的 base64。所以数据肯定是存在的,但 IE 只是不渲染它......
我尝试使用knockout JS 在这个 fiddle 中在我们的SharePoint 环境之外重新创建这个问题。基本上,我会抓取大量大图像,然后通过每次单击按钮将它们扔到屏幕上。但效果很好。如果我也使用 jQuery,它会完美地工作。
不知道从这里去哪里。
有什么想法吗?
最佳答案
事实证明,图像大小导致了问题。我在服务器端将图像缩小到缩略图大小并将其返回到浏览器。此时一切工作正常。
关于javascript - IE 9/10/11 在某个未知阈值后不渲染图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30858132/
我正在用 R 编写程序。我卡在这里。 我有像这样的矢量 X=c(84.05, 108.04, 13.95, -194.05, 64.03, 208.05, 84.13, 57.04) 我想在用 180
我正在编写一个应用程序,该应用程序涉及使用手指或手写笔在屏幕上书写。我有那部分工作。在 ACTION_DOWN 上,开始绘制;在 ACTION_MOVE 上,添加线段;在 ACTION_UP 上,完成
我正在尝试构建 OCR 以从图像中提取文本,我正在使用轮廓来形成文本字符的边界, 经过几次更改 cv2.threshold 的试验后,我在形成文本字符的边界时得到了最适合的轮廓。 #files = o
我正在尝试使用 OpenCV 的 cv::threshold函数(更具体 THRESH_OTSU ),只是我想用蒙版(任何形状)来做,以便在计算过程中忽略外部(背景)。 图像是单 channel (必
对于学校项目,我试图用 Python 编写一个程序来跟踪学生的运动。为了做到这一点,我正在使用 OpenCV。 在互联网上查找了一些教程后,我注意到几乎每个人都使用阈值来实现这一点,因为几乎每一步都需
我使用 jest 来驱动 selenium 测试,它报告一个需要 12 秒的测试缓慢(持续时间以红色突出显示)。在这种情况下,12 秒就可以了。 如何将阈值配置为 30 秒? 最佳答案 Jest is
我想找到 list1 中与 list2 中的值足够接近的值(基于指定的阈值),即与下面的代码类似的功能。然而,与 pyhton 的 set 交集相比,下面的 intersect_with_thresh
我正在尝试创建一张图表上有两个系列并带有阈值选项的浮线图。我知道当我只有 1 个系列时如何启用阈值(就像这里 http://people.iola.dk/olau/flot/examples/thre
我已正确应用 d3 (v 4.0) 直方图函数对数据数组进行分箱。我的代码如下所示: var bins = d3.histogram() .domain([data_points_min,
我正在使用带有自然语言全文的 Mysql FULLTEXT 搜索,不幸的是,我遇到了 FULLTEXT 50% 阈值,如果给定的关键字出现在总行数的 50% 时间,则不允许我搜索行。 我搜索并找到了一
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
这是我的绘图数据 var data = [{ data: [[4, 80], [8, 50], [9, 130]], color: "r
是否可以制作Canny忽略短边还是忽略低梯度边?在我的例子中,我将卡片放在木头上,并在 canny 之后看到木结构的许多边缘 canny 函数中的两个阈值有什么用? 最佳答案 Large intens
我正在尝试使用 OpenCV 的 cv::threshold 函数(更具体的 THRESH_OTSU),只是我想使用掩码(任何形状) ), 以便在计算过程中忽略外部(背景)。 图像是单 channel
我正在寻找根据提供的音频、频率范围(例如 20hz-1000hz)和阈值缩放 PNG 文件,以获得平滑的效果。 例如,当有脚踢时,比例平滑到 120%,我想让那些音频可视化器,如 dubstep 等.
我正在尝试找到最佳阈值,以使我的逻辑回归具有最高的 f1 分数。但是,当我写下以下几行时: val f1Score = metrics.fMeasureByThreshold f1Score.fore
我使用 Flot 创建了一个实时(每 10 毫秒更新一次)垂直样条图。图表可见here on Codepen 。我包括了 Flot multiple threshold plugin ,但我希望阈值使
我有一个数据框,其中包含从第 1 天到第 7 天的三个人(John、Terry、Henry)的分数。 1 2 3 4 5 6 7
我正在尝试实现多级 Otsu 阈值,更具体地说,我需要 3 个阈值/4 个类。 我知道关于 SO 的 2 个类似问题:#34856019 和 #22706742。问题是我没有得到好的结果:我已经阅读了
The documentation在 THRESH_BINARY 上说: dst(x,y) = maxval if src(x,y) > thresh else 0 这对我来说并不意味着这不适用于彩色
我是一名优秀的程序员,十分优秀!