jquery怎么传送stream数据流

jquery怎么传送stream数据流,第1张

使用ASP.NET MVC 3 RC2 的时候发现,这样的代码在一些情况下总是无法返回正确的结果(理论上来说前几个版本也存在这种可能):

MemoryStream ms = xxxx//图片类型

return File(ms, "image/jpeg")

跟踪了一下File的结果,确实已经有数据,但是无法在页面上返回(此时File重写方法返回的是FileSreamResult)。

但如果把这个Stream先保存为文件,然后直接返回文件名是可以的:

return File(filename, "image/jpeg")

此时File重写方法返回的是FileContentResult。

经过比较发现,这两个方法其实都可以获取到正确的FileSreamResult或者FileContentResult,只不过MVC无法正确渲染FileSreamResult,于是walkaround一下:

MemoryStream ms = xxxx//图片类型

return File(ms.ToArray(), "image/jpeg")

这样就把MemoryStream转成byte[]类型,返回类型为FileContentResult,可以正常输出。

方法如下

function convertImgToBase64(url, callback, outputFormat)

{var canvas = document.createElement('CANVAS'),

ctx = canvas.getContext('2d'),

img = new Image

img.crossOrigin = 'Anonymous'

img.onload = function(){canvas.height = img.height

canvas.width = img.width

ctx.drawImage(img,0,0)

var dataURL = canvas.toDataURL(outputFormat || 'image/png')

callback.call(this, dataURL)

canvas = null}

img.src = url}

我觉这是浏览器的事情了,只要你返回的数据是下载模式,然后将返回的字符串重新放入浏览器的url中,相当于:window.location="返回的字符串连接"

你试一试,应该可以。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/11504395.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存