在服务器的响应中,我可以在服务器上找到图像的路径。所以我通过路径下载到我的本地文件夹。
由于此响应每次都不一样,我不希望在本地文件夹中有未使用的图像,所以我想删除它们。
但是最快的方式是什么?
或许,还有其他选择吗?
由于
UPD
我有模型ImageDTO
public class ImageDTO
{
public int Id{ get; set; }
public string FileLocation { get; set; }
}
将图像保存到本地文件夹的方法
private static void SaveImageByUrl(string relativeUrl)
{
if (!string.IsNullOrWhiteSpace(relativeUrl))
{
var localFilePath = new Uri(Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase) + relativeUrl).LocalPath;
if (!Directory.Exists(Path.GetDirectoryName(localFilePath)))
{
Directory.CreateDirectory(Path.GetDirectoryName(localFilePath));
}
if (!File.Exists(localFilePath))
{
var remoteFilePath = ConfigurationManager.AppSettings["SiteUri"] + relativeUrl;
using (var client = new WebClient())
{
client.DownloadFileAsync(new Uri(remoteFilePath), localFilePath);
}
}
}
}
属性FileLocation
包含Image的相对路径。
从服务器我获得Json
格式的回复。我将其反序列化为对象集合,清除本地数据库并将其保存到本地数据库(我还有ProductDTO
,其中包含List<ImageDTO>
。所以我收到了List<ProductDTO>
的响应。当我这样做时,我异步地将图像保存到本地文件夹。
当我从数据库中清除数据或检查我是否有来自响应的图像并删除它时,最好清除本地文件夹中的所有图像?
答案 0 :(得分:0)
只下载您需要的图片并删除您不需要的图片。 这将比下载所有图像更快,当然,如果图像往往相同,并且您正在使用大量图像。
您还可以通过仅删除未使用x次的图片来增强您的代码
答案 1 :(得分:0)
我假设您的回复是源图像路径列表,然后您使用某些逻辑创建本地副本以构建本地路径?
如果是这种情况,请反转逻辑,以便确定原始路径应该来自本地。
然后遍历局部图像并找出源图像会是什么。如果答案中没有,请删除该文件。
因此,如果您的逻辑是采用文件名和扩展名但是在不同的目录中,则可以将其反转。
然后继续下载新的和更新的图像。您决定源图像是否会发生变化 - 如果他们不想下载新图像。否则,您也需要更新图像。这取决于你想要什么。您可以假设应该替换x天内的图像或者执行文件字节计数以查看它们是否不同。