نمایش نتایج 1 تا 27 از 27

نام تاپیک: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    90

    Question دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    سلام خدمت اساتید

    من یک برنامه دبیرخانه نوشتم که نامه ها رو اسکن میکنه و در سرور ذخیره میکنه و هر کاربر یه سطح دسترسی خاص خودش داره
    برای نمایش اسناد هم ازاین کد استفاده میکنم :

    Me.PictureBox1.Load("\\192.168.5.123\asnad\1.jpg")


    حالا یه مشکل اینجا پیش اومده، اونم اینه که:

    اگه پوشه ای که اسناد در اون ذخیر میشه رو شیر کنم همه افراد میتونن فایلها رو ببینن و یا حتی تغییر بدن
    اگه پوشه رو شیر نکنم اجازه نمایش فایلها در برنامه به من داده نمیشه !!

    لطفا اگه راهی به ذهن دوستان میرسه که قطعا هم میرسه راهنمایی کنن ممنون میشم

  2. #2

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    پیشنهاد میکنم موقع ذخیره کردن اسم فایل رو همراه با سطح دسترسی که براش تعریف میکنید ( مثلا گروه کاربران) ( گروه مدیران) و ... رو تو یک دیتابیس ذخیره کنید
    موقع لود کردن هم با توجه به اسم فایلی که قراره لود بشه از دیتابیس اطلاعات سطح دسترسی رو لود کنید و اگه مجاز بود نمایش بدید اگه نبود که پیغام بده

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    90

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    فربد جان ممنون ازجوابت

    ولی مشکل من با دسترسی از داخل برنامه نیست

    مشکلم بااینه که اگه پوشه عکسهامو تو سرور شیر کنم اونوقت همه حتی بدون اجرای نرم افزار میتونن کل عکسها رو ببینن و تغییر بدن

    اگر هم پوشه رو شیر نکنم اونوقت از طریق برنامه نمیتونم بهش دسترسی پیدا کنم

  4. #4

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    آهان
    الان متوجه شدم منظورتون رو
    درسته
    تا اونجایی که منم میدونم عکس رو بخوای تو از سرور تو یه کامپیوتر لود کنی و ببینی باید حتما دسترسی Read داشته باشی که اگه دسترسی رید داشته باشه با یه مپ نتورک یا ریموت میتونه کاربر ببینه عکسارو
    توی کامپیوتری هم که باهاش عکسارو ذخیره میکنی باید دسترسی رایت هم داشته باشی
    نمیدونم
    فکری به ذهنم نمیرسه

  5. #5
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    90

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    بهرجال متشکرم از جوایت

    دوستان دیگه اگه فکری به ذهنشون میرسه ممنون میشم اگه راهنمایی کنن

    خودم یه سرچی زدم ظاهرا یه روش هست به نام impersonation ولی مثال قابل فهم و قابل استفاده ای ازش پیدا نکردم

  6. #6
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    impersonation روش نیست عزیزم.احتمالا یکی از نقاط ضعف روشی بوده که خوندید.
    برای این کار چند تا روش پیشنهاد میشه:
    ۱.نوشتن پروتوکل خودتون با چند کتابخونه آماده مثل ServiceStack و proto-buffers
    ۲.استفاده از Marshaling(MarshalByRefObject)
    ۳.استفاده از یک وب سرویس با BasicAuthentication و در صورت نیاز SSL
    اگر اینها کافی نیست بگید چند تا دیگه بگم.چیزی که زیاده راهه.

  7. #7
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    90

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    نقل قول نوشته شده توسط FastCode مشاهده تاپیک
    impersonation روش نیست عزیزم.احتمالا یکی از نقاط ضعف روشی بوده که خوندید.
    برای این کار چند تا روش پیشنهاد میشه:
    ۱.نوشتن پروتوکل خودتون با چند کتابخونه آماده مثل ServiceStack و proto-buffers
    ۲.استفاده از Marshaling(MarshalByRefObject)
    ۳.استفاده از یک وب سرویس با BasicAuthentication و در صورت نیاز SSL
    اگر اینها کافی نیست بگید چند تا دیگه بگم.چیزی که زیاده راهه.
    FastCode جان من مثل شما Fast و حرفه ای نیستم، از اینا هم سر در نیاوردم
    من فقط میخوام به یه روش برسم که بتونم به فایلهای یک پوشه که در شبکه شیر نشده دسترسی پیدا کنم که فقط برنامه بتونه ببیندشون نه کاربران ویندوز

  8. #8
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    جست و جو کردید؟
    بعضی چیزها راحت به دست نمیاد.

  9. #9
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    90

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    نقل قول نوشته شده توسط FastCode مشاهده تاپیک
    جست و جو کردید؟
    بعضی چیزها راحت به دست نمیاد.
    بله اگر از جستجو به نتیجه میرسیدم که وقت اساتید رو نمیگرفتم و خودم هم زودتر به نتیجه میرسیدم

  10. #10
    کاربر دائمی
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    اصفهان
    پست
    166

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    سلام
    ببینید من هم دقیقا چند وقت پیش برای ایجاد همچین برنامه ای برای نامه ها و نقشه ها در شرکت با همین مسئله روبه رو بودم. تقریبا تمام راه هایی که وجود داشت را در موردشون تحقیق کردم.
    بهترین راه حلی که پیدا کردم که تونست تمام نیازهای من را براورده کنه استفاده از File Stream در SQL 2008 به بعد بود.
    با این قابلیت SQL شما قادر خواهید بود فایلهای نامه، عکس نقشه و یا هر چیز دیگه ای را بدون اینکه در سرعت بانک اطلاعاتی تاثیر بگذاره با امنیت کامل در اختیار کاربران مختلف قرار بدید. سرعت خواندن و نوشتن فایل در SQL با این روش با سرعت NTFS یا همون هارد کامپیوتر تقریبا برابره. تفاوت این دو در سرعت اصلا محسوس نیست.
    من تقریبا یک ماه زمان صرف کردم تا به روش File Stream رسیدم و باید بگم همه چیزهایی را که می خواستم را براورده کرد.
    امیدوارم تونسته باشم کمکی بکنم

  11. #11
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    90

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    صالحی عزیز ممنون از راهنماییت

    واقعا یعنی این روش تو سرعت و استفاده از منابع تاثیر نداره؟!

    اگه تعداد فایلها زیاد بشه و حجم اس کیو ال زیاد بشه چی بازم باعث کندی نمیشه؟ (البته انگار تو این روش فایلها توی دیتابیس ذخیره نویشه و مستقیم روی هارد ذخیره میشه، درست میگم؟)

    اگه بتونی منابعی که این روش رو یاد گرفتی معرفی کنی یا سورس نمونه ای رو برام بذاری خیلی ممنونت میشم

    متشکرم
    آخرین ویرایش به وسیله ehsanvb : یک شنبه 10 شهریور 1392 در 21:53 عصر

  12. #12
    کاربر دائمی
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    اصفهان
    پست
    166

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    سلام مجدد
    ببینید من هم نگرانی سرعت بانک را داشتم اما وقتی دیدم که File Stream دقیقا چه کاری می کنه خیالم راحت شد.
    ببینید شما یک فولدر درست می کنید و فایلهای خودتون را در اون قرار می دید و با توجه به اسم فایل اون را فراخونی می کنید. خوب File Stream هم دقیقا همین کار را انجام میده با این تفاوت که اسم فایل را با یک کد یونیک (یگانه) عوض میکنه و اسم یونیک را در جدول قرار میده. در واقع خود فایلها در جدوال SQL ذخیره نمی شوند که مشکلی برای سرعت بانک ایجاد کنه. علاوه بر این SQL ارتباط بین فیلد حاوی اسم فایل را با محل فایل خودش مدیریت می کنه و اجازه دسترسی دیگران را به فولدر فایلهای ذخیره شده نمیده. در عوض از طریق مجوز های صادر شده در بانک فایلها را به کاربر تحویل میده. در این حالت دیگه شما مشکل سرعت بانک را نخواهید داشت. البته ترافیک شبکه به قوت خودش باقی خواهد ماند که بحث دیگه ای هست و ربطی به سرعت بانک نداره.
    پس در این شرایط شما تمام قابلیتهای امنیتی که در جداول SQL وجود داره را به راحتی برای فایلهای خودتون هم بدست خواهید آورد.
    در SQL 2012 اگر اشتباه نکنم این قابلیت اضافه هم اضافه شده که وقتی شما یک فایل دلخواه را در این فولدر کپی می کنید فایل به صورت خودکار در جدول SQL در یک رکورد جدید ثبت خواهد شد. عالیه مگه نه؟
    سورس هم براتون میگذارم

  13. #13
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    90

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    نقل قول نوشته شده توسط r. salehi مشاهده تاپیک
    سلام مجدد
    ببینید من هم نگرانی سرعت بانک را داشتم اما وقتی دیدم که File Stream دقیقا چه کاری می کنه خیالم راحت شد.
    ببینید شما یک فولدر درست می کنید و فایلهای خودتون را در اون قرار می دید و با توجه به اسم فایل اون را فراخونی می کنید. خوب File Stream هم دقیقا همین کار را انجام میده با این تفاوت که اسم فایل را با یک کد یونیک (یگانه) عوض میکنه و اسم یونیک را در جدول قرار میده. در واقع خود فایلها در جدوال SQL ذخیره نمی شوند که مشکلی برای سرعت بانک ایجاد کنه. علاوه بر این SQL ارتباط بین فیلد حاوی اسم فایل را با محل فایل خودش مدیریت می کنه و اجازه دسترسی دیگران را به فولدر فایلهای ذخیره شده نمیده. در عوض از طریق مجوز های صادر شده در بانک فایلها را به کاربر تحویل میده. در این حالت دیگه شما مشکل سرعت بانک را نخواهید داشت. البته ترافیک شبکه به قوت خودش باقی خواهد ماند که بحث دیگه ای هست و ربطی به سرعت بانک نداره.
    پس در این شرایط شما تمام قابلیتهای امنیتی که در جداول SQL وجود داره را به راحتی برای فایلهای خودتون هم بدست خواهید آورد.
    در SQL 2012 اگر اشتباه نکنم این قابلیت اضافه هم اضافه شده که وقتی شما یک فایل دلخواه را در این فولدر کپی می کنید فایل به صورت خودکار در جدول SQL در یک رکورد جدید ثبت خواهد شد. عالیه مگه نه؟
    سورس هم براتون میگذارم
    سلام ، آره روش خیلی جالبیه
    در واقع همونیه که من دنبالشم

    یه سوال : آیا در بکاپ گیری از دیتابیس از فایل ها هم بک آپ گیری میکنه؟

    اگه یه سورس گویا هم بذاری که خیلی کمکم کردی

  14. #14
    کاربر دائمی
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    اصفهان
    پست
    166

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه





    Imports System.IO
    Imports System.Data.SqlClient
    Imports System.Data.SqlTypes

    Public Class ucLetterView
    Private kCS As String = My.Settings.SMSAConnectionString '"Data Source=(local)\SQL2008;Initial Catalog=TestFileStream;Integrated Security=True"
    ' Dim LeterViewTap As New DataSet1DocTableAdapters.NewTableTableAdapter
    ' Dim LeterViewDat As New DataSet1Doc.NewTableDataTable
    Private Declare Function ShellEx Lib "shell32.dll" Alias "ShellExecuteA" ( _
    ByVal hWnd As Integer, ByVal lpOperation As String, _
    ByVal lpFile As String, ByVal lpParameters As String, _
    ByVal lpDirectory As String, ByVal nShowCmd As Integer) As Integer



    Dim connection As SqlConnection


    Private Sub ucLetterView_Load(sender As Object, e As EventArgs) Handles Me.Load
    ' LeterViewTap.Fill(LeterViewDat)
    ' Dim qFile = (From k In LeterViewDat Select k.FileName, k.FileExtension).ToList
    ' DGV1.DataSource = qFile

    'Add Button Starts

    Dim dgButtonColumn As New DataGridViewButtonColumn
    dgButtonColumn.HeaderText = ""
    dgButtonColumn.UseColumnTextForButtonValue = True
    dgButtonColumn.Text = "Open"
    dgButtonColumn.Name = "OpenFile"
    dgButtonColumn.ToolTipText = "View File"
    dgButtonColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCellsExcep tHeader
    dgButtonColumn.FlatStyle = FlatStyle.System
    ' dgButtonColumn.DefaultCellStyle.BackColor = Color.Gray
    ' dgButtonColumn.DefaultCellStyle.ForeColor = Color.White
    DGV1.Columns.Add(dgButtonColumn)
    End Sub



    Private Sub btnRefreshList_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRefreshList.Click
    Dim dr As SqlDataReader = GetFileList()
    Dim tb As DataTable = New DataTable("Files")
    tb.Load(dr)
    DGV1.DataSource = tb
    End Sub

    Private Function GetFileList() As SqlDataReader
    Dim cn As New SqlConnection(kCS)
    Dim cmd As New SqlCommand("SELECT INTID, [Name], FileType FROM Files", cn)

    cn.Open()
    Return cmd.ExecuteReader(CommandBehavior.CloseConnection)
    End Function

    Private Sub btnBrowseUpload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBrowseUpload.Click
    Dim dlg As New OpenFileDialog
    With dlg
    .Title = "Select a file to upload"
    If .ShowDialog = Windows.Forms.DialogResult.OK Then
    txtFileUpload.Text = .FileName
    End If
    .Dispose()
    End With
    End Sub

    Private Sub btnBrowseDownload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBrowseDownload.Click
    Dim dlg As New SaveFileDialog
    With dlg
    .Title = "Select a save location"
    If .ShowDialog = Windows.Forms.DialogResult.OK Then
    txtFileDownload.Text = .FileName
    End If
    .Dispose()
    End With
    End Sub

    Private Sub btnUpload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpload.Click
    'Validate that the file exist
    If Not IO.File.Exists(txtFileUpload.Text) Then
    MessageBox.Show("The file you selected is invalid")
    Return
    End If

    AddNewFile(txtFileUpload.Text)
    btnRefreshList.PerformClick()
    End Sub

    Private Function AddNewFile(ByVal pFile As String) As Guid
    'fill some variables with values
    Dim ID As Guid = Guid.NewGuid
    Dim strFileName As String = IO.Path.GetFileName(pFile)

    Dim FileExt As String = IO.Path.GetExtension(txtFileUpload.Text)
    Dim FileExtentionLengh As SqlInt16 = Len(FileExt) - 1
    Dim FileExtention As String = Microsoft.VisualBasic.Right(FileExt, FileExtentionLengh)

    TextBox1.Text = FileExtention

    'open a connection
    Dim cn As New SqlConnection(kCS)
    cn.Open()

    'insert the new row
    Dim cmd As New SqlCommand("INSERT INTO Files ([ID], [Name], FileType) VALUES (@ID, @Name, @Extention)", cn)
    cmd.Parameters.Add("@ID", SqlDbType.UniqueIdentifier).Value = ID
    cmd.Parameters.Add("@Name", SqlDbType.VarChar, 20).Value = strFileName
    cmd.Parameters.Add("@Extention", SqlDbType.VarChar, 6).Value = FileExtention
    cmd.ExecuteNonQuery()

    'retreive the context of the transaction and the pathname
    Dim trx As SqlTransaction = cn.BeginTransaction
    cmd = New SqlCommand("SELECT [Data].PathName(), GET_FILESTREAM_TRANSACTION_CONTEXT() " + _
    "FROM Files " + _
    "WHERE ID = @ID", cn)
    cmd.Transaction = trx
    cmd.Parameters.Add("@ID", SqlDbType.UniqueIdentifier).Value = ID
    Dim rdr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleRow)
    rdr.Read()
    Dim strfilePath As String = rdr.GetString(0)
    Dim trxID As Byte() = DirectCast(rdr(1), Byte())
    rdr.Close()

    'insert the file into SQL FileStream field
    Using fs As IO.FileStream = IO.File.OpenRead(pFile)
    Using sqlFS As New SqlTypes.SqlFileStream(strfilePath, trxID, IO.FileAccess.Write)
    Dim buffer As Byte() = New Byte(512 * 1024) {}
    Dim intPos As Integer = fs.Read(buffer, 0, buffer.Length)
    Do While intPos > 0
    sqlFS.Write(buffer, 0, intPos)
    intPos = fs.Read(buffer, 0, buffer.Length)
    Loop
    End Using
    End Using

    trx.Commit()
    cn.Close()

    Return ID
    End Function

    Private Sub btnDownload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDownload.Click
    If String.IsNullOrEmpty(txtFileDownload.Text) Then
    MessageBox.Show("You first need to select an output location")
    Return
    End If

    If String.IsNullOrEmpty(DGV1.Item("ID", DGV1.CurrentRow.Index).Value.ToString) Then
    MessageBox.Show("You need to select a row")
    Return
    End If

    Dim ID As Guid = New Guid(DGV1.Item("ID", DGV1.CurrentRow.Index).Value.ToString)
    ExportFileToDisk(ID, txtFileDownload.Text)

    MessageBox.Show("File downloaded from SQL")
    End Sub

    Private Sub ExportFileToDisk(ByVal pID As Guid, ByVal pFileName As String)
    Dim cn As New SqlConnection(kCS)
    cn.Open()

    'retreive the context of the transaction and the pathname
    Dim trx As SqlTransaction = cn.BeginTransaction()
    Dim cmd As New SqlCommand("SELECT [Data].PathName(), GET_FILESTREAM_TRANSACTION_CONTEXT() " + _
    "FROM Files " + _
    "WHERE ID = @ID", cn)
    cmd.Transaction = trx
    cmd.Parameters.Add("@ID", SqlDbType.UniqueIdentifier).Value = pID
    Dim rdr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleRow)
    rdr.Read()
    Dim strFilePath As String = rdr.GetString(0)
    Dim trxID As Byte() = DirectCast(rdr(1), Byte())
    rdr.Close()

    'pull data down from the SQL into a buffer, then hand it off to the local file.
    Using fs As IO.FileStream = IO.File.OpenWrite(pFileName)
    Using sqlFS As New SqlTypes.SqlFileStream(strFilePath, trxID, IO.FileAccess.Read)
    Dim buffer As Byte() = New Byte(512 * 1024) {}
    Dim intPos As Integer = sqlFS.Read(buffer, 0, buffer.Length)
    Do While intPos > 0
    fs.Write(buffer, 0, intPos)
    intPos = sqlFS.Read(buffer, 0, buffer.Length)
    Loop
    End Using
    End Using

    trx.Commit()
    cn.Close()
    End Sub

    Private Sub DGV1_CellContentClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV1.CellContentClick
    Dim strSql As String = ""

    Dim connection As SqlConnection = New SqlConnection(kCS)
    Try
    Select Case e.ColumnIndex
    Case Is > -1
    If sender.Columns(e.ColumnIndex).Name = "OpenFile" Then

    Dim FileExtensionDGV As String = DGV1.Rows(e.RowIndex).Cells("FileType").Value
    Select Case DGV1.Rows(e.RowIndex).Cells("FileType").Value
    Case FileExtensionDGV
    downLoadFile(DGV1.Rows(e.RowIndex).Cells("INTID"). Value, DGV1.Rows(e.RowIndex).Cells("Name").Value, DGV1.Rows(e.RowIndex).Cells("FileType").Value)
    End Select

    End If

    End Select
    Catch ex As Exception
    MessageBox.Show(ex.ToString())
    End Try

    End Sub


    Private Sub downLoadFile(ByVal iFileId As Int16, ByVal sFileName As String, ByVal sFileExtension As String)
    Dim strSql As String
    connection = New SqlConnection(kCS)
    connection.Open()
    'For Document
    Try
    'Get image data from gridview column.
    strSql = "Select Data from Files WHERE INTID=" & iFileId

    Dim sqlCmd As New SqlCommand(strSql, connection)

    'Get image data from DB
    Dim fileData As Byte() = DirectCast(sqlCmd.ExecuteScalar(), Byte())

    Dim sTempFileName As String = Application.StartupPath & "\" & sFileName

    If Not fileData Is Nothing Then
    'Read image data into a file stream
    Using fs As New FileStream(sFileName, FileMode.OpenOrCreate, FileAccess.Write)
    fs.Write(fileData, 0, fileData.Length)
    'Set image variable value using memory stream.
    fs.Flush()
    fs.Close()
    End Using

    'Open File
    ' 10 = SW_SHOWDEFAULT
    ShellEx(Me.Handle, "Open", sFileName, "", "", 10)
    End If

    Catch ex As Exception
    MsgBox(ex.Message)
    End Try

    End Sub
    End Class


    این یک مثال ساده است که تمام نیازهای برنامه نویسی شما را بر طرف می کنه و بنا به نیاز خودتون میتونید تغییرش بدید. در ضمن DGV هم همون دیتاگرید ویو ویژاول بیسیکه.
    فقط به خاطر داشته باشید که قبلش باید در SQL فایل استریم را فعال کنید روش این کار را هم در اینترنت به راحتی می تونید پیدا کنید.
    در ضمن همون طوری که قبلا گفتم فایل استریم از SQL2008 به بعد قابل استفاده هست.
    موفق باشید

  15. #15
    کاربر دائمی
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    اصفهان
    پست
    166

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    این هم نمایی از حالت اجرای نرم افزار.
    با این روش شما هر فایلی با هر فرمتی را میتونید در اس کیو ال با امنیت کامل ذخیره و بازیابی کنید.

    view.png

  16. #16
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    90

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    آقا متشکر از مثال

    من در SQL فایل استریم را فعال کردم

    ولی من هرکاری کردم نتونستم این ارور رو برطرف کنم

    توی این خط
    Dim rdr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleRow)


    این ارور رو میده :
    Function PathName is only valid on columns with the FILESTREAM attribute.

    هرچی جستجو کردم و تلاش کردم نفهمیدم از چیه!!!

    نمیدونم کجا رو اشتباه کردم.

    اگه ممکنه راهنمایی بفرمایید

    متشکرم.

  17. #17
    کاربر دائمی
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    اصفهان
    پست
    166

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    جدول اس کیو ال را ساختین مطابق عکسی که براتون فرستادم؟

  18. #18
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    90

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    بله ساختم

    اینم عکسش :

    111.jpg

    به جز این تنظیمات ظاهری تنظیم دیگه ای هم توی column properties باید انجام بدم ؟

  19. #19
    کاربر دائمی
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    تهران علوم تحقیقات
    پست
    172

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    با سلام به شما دوست عزيز
    تمامی روش های که دوستان پيشنهاد و ارائه کردند تجربه عملی آنها در پروژه های خودشان می باشد همان طوری که یک قرص درد یک نفر را درمان می کند دلیل نمی شود که آن قرص هم درد شما را درمان کند شما از همان روشی که اقدام کرديد بسیار صحيح عمل کرده اید فقط متاسفانه البته جسارت به شما و دوستان نمی کنم بعضی از افراد را مشاهده می کنم که با کمترين تجربه ای از سیستم عامل و شبکه پا در پروژه هایی می گذارند که بايد بعنوان پيش نياز حتما در شبکه و سيستم عامل تسلط نسبی داشته باشند .
    با توجه به اين که برنامه را نوشته ايد و در این گام از برنامه به مشکل خورده اید نباید کل پروژه را دسخوش تغييرات جدی نماييد به هر حال من هم روش ذخيره اطلاعات فايلی را در اين گونه موارد خاص که فايل ها از اهميت برخوردار هستند را توصيه نمی کنم .
    شما برای اين کار بايد از يک سيستم سرور که خودتان عنوان کرديد 192.168.5.123 استفاده کنيد اما اين روش شما هيج ربطی به برنامه نويسی ندارد بلکه با استفاده از یکی از نسخه های سرور ويندوز 2003 یا 2008 اقدام به نصب بر روی سرور می نماييد پشت بند نصب حتما ActiveDirectory را نصب و Domain را به نام دلخواه خود تعريف می کنيد که بعد به جايي این که در کد سورس خود IP را ذکر کنيد نام کامپيوتر را بزنيد در خصوص Share هم فقط کافی است سطح دسترسی کاربران را به Drive مربوطه که قرار است تعيين نماييد و فقط Drive را Share می کنید (البته اگر حرفه ای تر هم باشيد نيازی به Share Drive هم نيست ) بعد اگر Client ها از ويندوز XP یا 7 استفاده می کنند چون شما برای آنها در ActiveDirectory کاربری تعريف کرديد ابتدا آن سيستم عامل را به Domain متصل کرده و سپس جهت Login در client نام دامين و سپس نام کاربری تعريف شده به همراه پسورد را زده و بالا می آييد توجه داشته باشيد که کاربر شما سطح دسترسی به Drive را دارد و چون سطح دسترسی به درایو را دارد نرم افزار می تواند براحتی به آن پوشه مورد نظر دسترسی پيدا کند بدون اين که نياز به Share باشد و فقط کاربران تعريف شده این امکان را دارند کاربران دیگری که تعريف نشده باشند دسترسی به سرور را در صورتی دارند که پسورد را بدانند حالا برای امنيت پوشه ای هم که کسی نمی بيند ولی شما از طريق برنامه به آن دسترسی داريد بايد از توابعی استفاده کنيد که به منظور Security پوشه با سيستم عامل در ارتباط است من نمی تونم بيشتر اين روش را باز کنم چون اين کار را بايد به صورت حضوری انجام دهم تا با روش کار آشنا شويد ولی اين روش را من در ادارات استفاده کردم و قطعی هم نتيجه گرفتم بدون کوچکترين خطای امنيتی . البته من تمامی روش را گفتم توجه داشته باشيد که اين روش کاملا عملی است فقط کافی که با سيستم عامل و شبکه و البته توابعی که برای تعيين سطح دسترسی به فولدرها مورد استفاده قرار می گیرد آشنايي داشته باشيد .
    در خصوص روش ذخيره فايل ها در SQL هم بايد بگم اين روش را هم روش خوبی است اما متدهای استفاده از آن به جهت ذخيره و بازيابی اسناد فوق العاده مهم می باشد چون اطلاعات بعد از ذخيره در بانک اطلاعاتی به صورت باينری ذخيره می شوند و اگر روش صحيحی برای ذخيره استفاده نکنيد مطمئن باشيد در بازيابی به مشکل می خوريد و حتی در برخی از موارد که فايل ها حجيم باشد در صد خطا افزايش پيدا می کند . ولی امنیتش فوق العاده است . روشی هم که من گفتم کاربردی تر و امنيتش به صورت مسقيم با ActiveDirectory و User ها به منظور دسترسی توسط نرم افزار انجام می شود ... انشاء ا... که از هر روشی استفاده می کنيد موفق باشيد ...
    آخرین ویرایش به وسیله hedi : سه شنبه 12 شهریور 1392 در 20:23 عصر

  20. #20
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    90

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    باسلام خدمت hedi عزیز

    از دقتی که نسبت به مطلب داشتید و وقتی که برای پاسخگویی گذاشتید تشکر میکنم

    شما درست میفرمایید، من توی شبکه تسلط کامل ندارم ولی لوازم ابتدایی مثل ویندوز سرور 2003 و اکتیو دایرکتوری و دامین رو نصب کردم و دارم استفاده میکنم ، البته مطلبی رو که جناب صالحی عزیز فرمودند رو بدلیل اینکه سرورم اس کیو ال 2003 داشت روی کامپیوتر خودم تست کردم و به اون ارور برخوردم

    نقل قول نوشته شده توسط hedi مشاهده تاپیک
    فقط Drive را Share می کنید (البته اگر حرفه ای تر هم باشيد نيازی به Share Drive هم نيست )
    جناب hedi مشکل من هم دقیقا همینجاست که اگر یک درایو یا پوشه رو Share کنم علاوه بر برنامه کاربران ویندوز بدون باز کردن برنامه هم میتونن بهش دست پیدا کنن ، ولی شما فرمودید که : البته اگر حرفه ای تر هم باشيد نيازی به Share Drive هم نيست . ممکن یه راهنمایی در این خصوص بفرمایید (البته روش نام درایو بعلاوه $ را میدونم ولی بعلت اینکه باید با ادمین لاگین بود درست نیست)
    باتشکر از دقت نظر شما

  21. #21
    کاربر دائمی
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    تهران علوم تحقیقات
    پست
    172

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    (البته روش نام درایو بعلاوه $ را میدونم ولی بعلت اینکه باید با ادمین لاگین بود درست نیست)
    همان طور که در پست قبلی ذکر کردم شما بايد با توابعی که برای تعيين سطح دسترسی به فولدرها مورد استفاده قرار می گیرد آشنايي داشته باشيد . حالا یک مثال می زنم چنانچه سطح دسترسی کاربران به درایو فعال باشد این بدان منظور نیست که به کل پوشه ها هم دسترسی دارد و می تواند آن ها را مورد تغيير و تحول قرار دهد اگر Client های شما از ويندوز 7 استفاده می کنند روش را بدين صورت دنبال می کنم که ابتدا به ساکن به بخش Network and Sharing Center مراجعه کرده و گزينه Advanced sharing settings را انتخاب می کنيد در انتهای همان صفحه گزينه Turn Off Password Protected sharing را فعال می کنيد این حرکت باعث می شود که کاربران نیاز به زدن Password برای دسترسی به رایانه های هم نداشته باشند و بدون نیاز به Share درايو آنها را در دسترس دارند اما به هيچ عنوان نمی توانند به پوشه ها وارد یا اطلاعات آنها را حدف کنند(چون بايد برای ورود به پوشه ها کاربر رایانه متقاضی بايد سطح دسترسی را برای شما فراهم کند) البته برای دسترسی به درایو هم کاربر بايد نام درایو + $ را هم که شما فرموديد تازه بداند اما بحث سطح امنيتی پوشه ها اين است که شما چنانچه بخواهيد یک Folder را در اختيار کاربرتان قرار دهيد بايد توسط نرم افزار خودتان و زمانی که فرم جاری برنامه برای عمليات دسترسی به پوشه فعال است مجوز دسترسی را تعيين کرده و با بستن فرم و یا غير فعال شدن فرم بلافاصله مجوز را لغو می کنيد که اگر کاربر حرفه ای هم باشد و بخواهد از طريق Explorer به مسیر دسترسی داشته باشد کاری را نتواند انجام دهد بحث Security پوشه ها را حتما دنبال کنيد و با استفاده از توابع مربوطه که در زبان VB بدين منظور تعبيه شده براحتی می توانيد اين روش را پياده سازی کنيد . البته روش های ديگری هم بود اما چون شما برنامه تان را بر اين مبنا درست کرده بوديد من نزديکترين روش را پيشنهاد کردم . موفق باشيد

  22. #22
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    90

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    نقل قول نوشته شده توسط hedi مشاهده تاپیک
    اما بحث سطح امنيتی پوشه ها اين است که شما چنانچه بخواهيد یک Folder را در اختيار کاربرتان قرار دهيد بايد توسط نرم افزار خودتان و زمانی که فرم جاری برنامه برای عمليات دسترسی به پوشه فعال است مجوز دسترسی را تعيين کرده و با بستن فرم و یا غير فعال شدن فرم بلافاصله مجوز را لغو می کنيد که اگر کاربر حرفه ای هم باشد و بخواهد از طريق Explorer به مسیر دسترسی داشته باشد کاری را نتواند انجام دهد بحث Security پوشه ها را حتما دنبال کنيد و با استفاده از توابع مربوطه که در زبان VB بدين منظور تعبيه شده براحتی می توانيد اين روش را پياده سازی کنيد .
    دوستان عزیز کل مشکل من هم اینجاست

    چه جوری فقط و فقط توسط برنامه به شبکه و پوشه داخل شبکه دسترسی پیدا کنم به طوری که خود برنامه لاگین کنه و دسترسی پیدا کنه و کاربر از طریق ویندوز و Explorer و ... نتونه به پوشه های مورد نظر برسه،

    خسته شدم اینقدر گشتم تو سایتها لطفا یکی کمک کنه

  23. #23
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    90

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    با تشکر از تمام دوستان و اساتیدی که راه حل های مختلف ارائه کردن (بخصوص r. salehi با اون آموزش عالی که رائه دادن)

    بالاخره اون روشی رو که میخواستم عملی کردم.

    لینک آموزشش رو هم میذارم برای دوستانی که با جستجو به اینجا رسیدن

    امیدوارم بدردشون بخوره :

    https://barnamenevis.org/showthread.p...=1#post1915406

  24. #24

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    سلام
    منم یه روش به ذهنم میرسه،اینکه همه پوشه ها روی سرور از حالت شیر خارج بشن و یه نرم افزار از طرف خودمون روی سرور ران بشه که وظیفه واسط بین نرم افزار کاربران و سرور رو به عهده داره
    به این ترتیب که نرم افزار کاربر به این نرم افزار که روی سرور در حال اجرا هست درخواست فایل میفرستن و این نرم افزار واسط چون روی سرور در حال اجرا هست و سطح دسترسی هم که طبیعتا داره،فایل رو میخونه و ارسال میکنه؛خوبهههههههههههههههه ههههههههههههههههههههههههه ههههههههههههههههههههههههه ه؟؟؟

  25. #25
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    نقل قول نوشته شده توسط masoud.rhb مشاهده تاپیک
    سلام
    منم یه روش به ذهنم میرسه،اینکه همه پوشه ها روی سرور از حالت شیر خارج بشن و یه نرم افزار از طرف خودمون روی سرور ران بشه که وظیفه واسط بین نرم افزار کاربران و سرور رو به عهده داره
    به این ترتیب که نرم افزار کاربر به این نرم افزار که روی سرور در حال اجرا هست درخواست فایل میفرستن و این نرم افزار واسط چون روی سرور در حال اجرا هست و سطح دسترسی هم که طبیعتا داره،فایل رو میخونه و ارسال میکنه؛خوبهههههههههههههههه ههههههههههههههههههههههههه ههههههههههههههههههههههههه ه؟؟؟
    همه روشهای معرفی شده در این تاپیک همین کار رو میکنن...

  26. #26

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    نقل قول نوشته شده توسط FastCode مشاهده تاپیک
    همه روشهای معرفی شده در این تاپیک همین کار رو میکنن...
    تو این روشا پوشه شیر میشه و شیر شدن پوشه حتی با یوزر و پسورد خطرناکه حسن؛ ولی وقتی برنامه خودت رو سرور ران باشه از نظر سطح دسترسی مشکلی نداره و پوشه هم شیر نمیشه کلا

  27. #27
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: دسترسی به فایلهای یک پوشه شیر نشده در شبکه

    نقل قول نوشته شده توسط masoud.rhb مشاهده تاپیک
    تو این روشا پوشه شیر میشه و شیر شدن پوشه حتی با یوزر و پسورد خطرناکه حسن؛ ولی وقتی برنامه خودت رو سرور ران باشه از نظر سطح دسترسی مشکلی نداره و پوشه هم شیر نمیشه کلا
    همونطور که گفتم همه روشهای معرفی شده از یک برنامه واسط استفاده میکنند.
    و هرگز فکر نکن میتونی یه چیزی امنتر از حتی ftp بنویسی. ftp با همه نا امن بودنش هزار و یک چیز رو در نظر میگیره.

تاپیک های مشابه

  1. دسترسی به فایلهای پوشه
    نوشته شده توسط xzxzxz در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: چهارشنبه 31 خرداد 1391, 06:59 صبح
  2. عدم دسترسی به فایلهای پوشه System32
    نوشته شده توسط hadisalahi2 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 15
    آخرین پست: جمعه 30 مرداد 1388, 19:33 عصر
  3. اشکال در دسترسی به فایلهای دارای نام و مسیر فارسی
    نوشته شده توسط student در بخش برنامه نویسی در 6 VB
    پاسخ: 0
    آخرین پست: سه شنبه 01 اسفند 1385, 16:12 عصر
  4. مشکل در کپی فایلهای یک پوشه
    نوشته شده توسط mehialdst در بخش برنامه نویسی در Delphi
    پاسخ: 3
    آخرین پست: یک شنبه 19 تیر 1384, 04:46 صبح
  5. دسترسی به فایلهای یک کامپیوتر بدون sharing
    نوشته شده توسط fm_mash در بخش برنامه نویسی در Delphi
    پاسخ: 4
    آخرین پست: جمعه 24 مهر 1383, 10:00 صبح

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •