PDA

View Full Version : حذف یک فایل از روی سایت



snisni63
پنج شنبه 12 مهر 1386, 13:36 عصر
سلام
شاید عنوان مناسبی نباشه ولی ...

<%@ Page Language="VB" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR
/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim Paging As New PagedDataSource

Dim currentPage As Integer



Dim upFolder As String = MapPath("~/Gallery/")
Dim dir As New DirectoryInfo(upFolder)

Paging.DataSource = Dir.GetFiles()
Paging.AllowPaging = True
Paging.PageSize = 1


If (Request.QueryString("Page") <> Nothing) Then
currentPage = Convert.ToInt32(Request.QueryString("Page"))
Else
currentPage = 1
End If

Paging.CurrentPageIndex = currentPage - 1

If Not Paging.IsFirstPage Then
p.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(currentPage - 1)
End If

If Not Paging.IsLastPage Then
n.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(currentPage + 1)
End If

DataList1.DataSource = Paging
DataList1.DataBind()




End Sub
Sub btnAdd_Click(ByVal sender As Object, ByVal e As EventArgs)
If (upImage.HasFile) Then
If (CheckFileType(upImage.FileName)) Then
Dim filePath As String = "~/Gallery/" & upImage.FileName
upImage.SaveAs(MapPath(filePath))
End If
End If
End Sub

Function CheckFileType(ByVal fileName As String) As Boolean
Dim ext As String = Path.GetExtension(fileName)
Select Case ext.ToLower()
Case ".gif"
Return True
Case ".png"
Return True
Case ".jpg"
Return True
Case ".jpeg"
Return True
Case Else
Return False
End Select
End Function


</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">

<title>FileUpload File</title>
</head>
<body>
<form id="form1" runat="server">
<div>

<asp:Label
id="lblImageFile"
Text="Image File:"
AssociatedControlID="upImage"
Runat="server" />

<asp:FileUpload
id="upImage"
Runat="server" />
<br /><br />

<asp:Button
id="btnAdd"
Text="Add Image"
OnClick="btnAdd_Click"
Runat="server" />

<hr />

<asp:DataList
id="DataList1"
RepeatColumns="3"
runat="server">
<ItemTemplate>
<asp:HyperLink id="Image1Link" runat="server" >

<asp:ImageButton ID="Image1"
ImageUrl='<%# Eval("Name", "~/Gallery/{0}") %>'
style="width:200px"
Runat="server">
</asp:ImageButton>

</asp:HyperLink>
<br />
<%# Eval("Name") %>
</ItemTemplate>
</asp:DataList>
<asp:HyperLink ID="p" Text="صفحۀ قبل" runat="server"/>
<asp:HyperLink ID="n" Text="صفحۀ بعد" runat="server" />
</div>
</form>
</body>
</html>



من برای نمایش یک گالری عکس در سایت از روش بالا استفاده کردم. حالا به فرض می خواهیم امکان Delete این عکس ها هم با استفاده از کنترل DataList فراهم باشه، باید چی کار کنم؟

سوال بعدی که شاید تکرار همین سوال باشه :
من در سایتم یک جدول کاربران دارم که شامل یک فیلد برای آدرس تصاویر آپلود شدشون هست. برای اینکه حجم بانک داده زیاد نشه، تصاویر رو فایل سیستم ذخیره کردم. حالا اگر بخوام یک کاربر رو Delete کنم چه طور می تونم تصویری هم که مربوط به اونه از توی سایت حذف کنم؟
خیلی ممنون

snisni63
پنج شنبه 12 مهر 1386, 14:11 عصر
با سلام
اولا منم به نوبۀ خودم ورودتون رو به سایت خوش آمد میگم. امیدوارم بتونی به نحو احسن به دوستات کمک کنی
ثانیا، ضمن عرض تشکر؛ من گمان می کنم شما سوال منو نخونده باشی دوست عزیز.
چون سوال من در مورد ذخیره کردن تصاویر نبود.
با تشکر

m_d6712
پنج شنبه 12 مهر 1386, 14:21 عصر
اینو قبلا برای یکی دیگه هم توضیح دادم
اول یک فیلد برای اسم فایل در دیتا بیس ایجاد کن. بعد به این طریق فایلو ایجاد کن


Dim file As Microsoft.VisualBasic.FileIO.FileSystem
file.CreateDirectory(Server.MapPath("userpics/" & txtusernum.Text.Trim))
FileUploadpic.SaveAs(Server.MapPath("userpics/" & txtusernum.Text.Trim & "/" & FileUploadpic.FileName.Trim & ".jpg"))

txtusernum شماره کاربر است. این فولدر رو برای این ایجاد کردم که اگه یه وقتی دو تا فایل به یک نام بود replace نشه.
برای اینکه بشه ازش استفاده کنی بهتره از datagrid استفاده کنی

حذف کردنم به این صورته


Private Sub DataGrid3_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles DataGrid3.ItemCommand
Dim strconnectionstring As String = Application("connstr")
Dim myconnection As New SqlConnection(strconnectionstring)
myconnection.Open()
Dim myadapter As New SqlDataAdapter()
If e.CommandName = "clear" Then
Dim linkId As String = e.Item.Cells(2).Text.Trim
Dim cmdstr As String = "SELECT userID,picname FROM link WHERE linkId='" & linkId & "'"
Dim mycommand As New SqlCommand(cmdstr, myconnection)
Dim myreader As SqlDataReader
myreader = mycommand.ExecuteReader
myreader.Read()
Try
file.DeleteFile(Server.MapPath("userpics/" & myreader.GetValue(1).ToString.Trim & "/" & myreader.GetValue(0).ToString.Trim))
Catch ex As Exception
End Try

عبارت e.Item.Cells(2) برای فراخوانی شماره کاربر از datagrid و ارسال آن به بانک لحاظ شده که به معنی فیلد واقع در سطر انتخاب شده و ستون دوم است.

m_d6712
پنج شنبه 12 مهر 1386, 14:26 عصر
فایلم ناقص اومده بود. متاسفم
من این کار رو قبلاً کردم اگه مشکلت حل نشد بگو فایل خودم رو بهت بدم شاید بهتر متوجه بشی

sama01
پنج شنبه 12 مهر 1386, 17:18 عصر
حذف فایل:


System.IO.Eile.Delete(server.mappath("~")+"Images/"+filenaeme)
برای حذف کاربر هم در کلاس memberShip یه جستجو بکنی خیلی چیز‌ها دستگیرت می‌شه.

برای چندمین بار: لطفا اول جستجو بعد ایجاد تاپیک (حذف فایل):اشتباه:

abadanboy
جمعه 13 مهر 1386, 00:11 صبح
اول جستجو کن بعد بپرس

http://barnamenevis.org/forum/showthread.php?t=80827