0

我正在使用 Asp.Net MVC 和 Jquery。我有一个包含文件输入控件的表单来上传图像。我想在保存到数据库之前预览选定的图像。

我使用的代码在这里。

<img id="preview_image" alt="" src="" width="100px" height="120px"/>
<input type="file" name="user_image" id="user_image" onchange="preview(this);"/>
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script type="text/javascript" language="javascript">
    function preview(input) {
        if (input.files && input.files[0]) {
            var reader = new FileReader();
            reader.onload = function (e) {
                $('#preview_image')
                    .attr('src', e.target.result)
                    .width(100)
                    .height(120);
            };

            reader.readAsDataURL(input.files[0]);
        }
    }
</script>

它在 Internet Explorer 和 Safari 中不起作用。因为这些浏览器不支持“FileReader”

有没有不使用任何 Flash 插件的其他解决方案?提前致谢

4

2 回答 2

0

依靠客户来做这件事会给你带来长期的头痛和问题。

我的解决方案是使用确认页面,您可以在其中向用户展示他们上传、调整大小并存储在临时区域中的图像。当用户点击确认时,将图像保存到数据库中。然后,您可以删除该图像,或者更可能将其移至可用作缓存的位置。

如果您不想走确认页面路线,您可以只提交调整大小的图像并使用 ajax 从临时区域返回。

最后,数据库中的图像在理论上是好的,但它们不能很好地扩展,特别是如果它们非常大。我们的策略是制作 6 个不同版本/大小的上传图像并将它们保存在文件系统中,包括原始图像。这使您可以灵活地使用所需大小的图像,并使您的数据库更轻。

于 2012-11-28T12:56:20.107 回答
0

您可以查看FileSystemObject此问题中所述的 ActiveX 对象:IE 和本地文件读取

于 2012-11-28T11:11:04.583 回答