Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 2 在MVC中删除图像的最佳方式是什么?_Asp.net Mvc 2 - Fatal编程技术网

Asp.net mvc 2 在MVC中删除图像的最佳方式是什么?

Asp.net mvc 2 在MVC中删除图像的最佳方式是什么?,asp.net-mvc-2,Asp.net Mvc 2,我创建了一个MVC应用程序,您可以在其中上传图像。我将它们存储在文件系统中,如果文件存在,我将显示它,而不是使用SQL跟踪文件 我有一个带foreach的IList字符串显示它们。但现在我需要删除特定的图像,我不知道如何在MVC中实现它,因为我可以通过imagename识别图像 有人能告诉我在我的场景中管理照片的最佳方法吗。提前感谢您需要查看System.Web.HttpServerUtility.MapPath。您可以为它提供图像的虚拟路径(/images/picture.jpg),它将返回绝

我创建了一个MVC应用程序,您可以在其中上传图像。我将它们存储在文件系统中,如果文件存在,我将显示它,而不是使用SQL跟踪文件

我有一个带foreach的IList字符串显示它们。但现在我需要删除特定的图像,我不知道如何在MVC中实现它,因为我可以通过imagename识别图像


有人能告诉我在我的场景中管理照片的最佳方法吗。提前感谢

您需要查看System.Web.HttpServerUtility.MapPath。您可以为它提供图像的虚拟路径(/images/picture.jpg),它将返回绝对路径(C:\web\mysite\images\picture.jpg)。现在您可以删除图像。

不确定是否理解问题,MVC或其他:这并不重要。图像是服务器上的一个文件,因此您可以像删除任何其他文件一样删除它,例如使用server.Mappath解析文件信息并在其上播放delete。

现在非常确定如何解释您的问题。。。MVC似乎完全脱离了上下文

但是。。。在我看来,您有一个名为ImageController的控制器,其操作名为Delete。该操作接受一个FormCollection参数,该参数在调用时包含图像的名称

因此,当您删除时,您有一个表单,该表单执行到ImageController->delete操作的POST,并将图像的名称与其一起传递。图像的名称包含在隐藏字段中

附带说明:使用名称作为标识可能不是一个好主意。原因之一是目录遍历攻击。例如,提供“../../../”而不是图像名称。如果您不擅长输入数据的白名单/验证,则可能会发生这种攻击


您要求提供一个示例,我们开始吧。 假设您想删除存储在“/pics/path/mypic.jpg”中的图片。 首先你得打电话

string path = Server.MapPath("/pics/path/mypic.jpg");
获取图片的物理路径并将其存储在path变量中。 然后你可以做:

FileInfo fi = new FileInfo(path);
if(fi.Exists)
    fi.Delete();
else
    what you want to do if file does'nt exists.
注意:如果文件不存在,fi.Delete()不会引发异常


要获取目录中所有文件的列表,可以使用directory.GetFiles()或DirectoryInfo实例。

只需要一个如何实现它的示例。我不知道如何完成它。。。