我有一个asp.net 2010项目。我在文件系统中写了一个jpg。然后我在Image控件中显示它。然后我在按钮单击时使用此代码以允许用户将其旋转90度。
string path = Server.MapPath(Image1.ImageUrl) ;
// creating image from the image url
System.Drawing.Image i = System.Drawing.Image.FromFile(path);
// rotate Image 90' Degree
i.RotateFlip(RotateFlipType.Rotate90FlipXY);
// save it to its actual path
i.Save(path);
// release Image File
i.Dispose();
它确实旋转(我实际上可以在Windows资源管理器中观察到这种情况)。但是当我再次运行应用程序并从路径中抓取文件时,它仍然以原始形式显示它。
答案 0 :(得分:0)
尝试在图像末尾添加一个虚拟查询字符串,如“image1.jpv?v = 1”。这有助于防止缓存Javascript文件之类的内容,它可能会为您做同样的事情。
答案 1 :(得分:0)
这是浏览器缓存资源文件的经典问题。 艾莉森的答案是一种选择。另一种选择是更改物理文件的名称。如果您“版本化”文件,则每次更改后,文件名将不同。这意味着您必须动态引用图像路径以便显示正确的版本,并且您需要某种方法来确定当前版本的文件名。但它确实阻止浏览器在更改后立即显示以前缓存的文件,因为从技术上讲,它在此时是浏览器的新文件。
如果您使用某种数据源(XML文件或数据库)来存储图像的元数据,则可以添加“Version”列并存储一个简单的整数。每次更改时,递增整数值并使用文件名中的新值。您甚至可以通过保存以前的版本并允许用户通过将旧版本的文件复制到新版本来“撤消”操作来扩展此功能。但是,这可能需要更强大的元数据存储实现。