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

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

  1. #1

    Arrow جلوگیری از آپلود فایل بانام تکراری

    سلام،

    من یک برنامه برای آپلود فایل نوشتم اینطوری:
    <form  runat="server">
    Select a file to upload:
    <input type="file" id="fileControl" runat="server"><br>
    Save as: (Just the name only please):
    <input id="txtTargetName" readonly="true" type="text" runat="server"><br>
    <input type=button id="btnLoad" value="Upload"
    OnServerClick="btnLoad_Click" runat="server"><br>
    <span id=span1 runat="server" /><br>
    <asp:Label ID="t" runat="server"/>
    </form></html>
    <script language="VB" runat="server">
    dim t3 as string
    dim t2,t1 as integer
    Sub btnLoad_Click(s As Object, e As EventArgs)
    If txtTargetName.Value="" Then
    span1.InnerHtml="Error: you must enter a file name"
    Return
    End If
    If Not (fileControl.PostedFile Is Nothing) Then
    Try
    fileControl.PostedFile.SaveAs(("G:\homaaaa\" + txtTargetName.Value))
    Catch err As Exception
    span1.InnerHtml="Error saving file <b>G:\homaaaa\" + _
    txtTargetName.Value & "</b><br>" & err.ToString()
    End Try
    End If
    End Sub
    </script>


    من توی برنامه م اسم و پسوند فایل موردنظر رو از کاربر می گیرم . بعد در آدرسG:\homaaaa\ آپلودش می کنم .

    مشکل من اینجای که اگر کاربر فایلی با نام وپسوندی رو بخواد آپلود کنه که در آدرسG:\homaaaa\ وجود داشته باشه باعث میشه این فایل جدید روی اون فایل قبلی ریخته بشه و فایل قبلی از بین بره...
    مثلا یک کاربر فایل عکس رو با نامme.jpg آپلود میکنه حالا چند روز دیگه یک فایل عکس دیگه با همین نام و پسوند رو مییاد آپلود کنه ؛ این باعث میشه فایل جدید روی قبلی ریخته بشه.....

    که این خیلی بدهست... من میخوام اگر فایلی با این نامه و پسوند در آدرس G:\homaaaa\وجود داشت به کاربر پیام خطا بده و بگه اسم فایل رو عوض کن..

    چطور میتونه اینکار رو بکنم؟؟؟؟؟؟؟؟؟؟؟؟

  2. #2
    کاربر دائمی
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    فعلا خونه بابام
    پست
    329
    لازم نیست به طرف پیام خطا بدهید اسم فایل را خودتان تغییر دهید و در بانک ذخیره کنید و اگر فایل را خواستید با اسم و آدرس آن را از بانک بخوانید بدون هیچ مشکلی

  3. #3
    کاربر دائمی آواتار peymannaji
    تاریخ عضویت
    مهر 1385
    محل زندگی
    تو یکی از صفرهای گوگل ...
    پست
    881
    سلام دوست عزیز
    ببینید بهتزین راه که خودم استفاده میکنم برای اینکه اسامی تکراری نشه استفاده از ماه سال روز ساعت دقیقه ثانیه و اگه خیلی حسایت نشون بدم صدم ثانیه رو بصورت ترکیبی برای نام فایل در نظر بگیرید ... البته راه دیگه ای هم شاید باشه اما من همین روش رو استفاده میکنم ... موفق باشید ...

  4. #4
    کاربر دائمی آواتار shahab_ksh
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    تو اطاقم
    پست
    1,388
    از ترکیب اعداد تصادفی و کلید اصلی جدول تون هم میتونید در انتهای نام فایل استفاده کنید

  5. #5
    کاربر دائمی آواتار mahdi_farhani
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    فولادشهر - اصفهان
    سن
    36
    پست
    1,227
    میتونی از FileExist استفاده کنی و اگر وجود داشت بیاد با هر فرمولی که دوست داری فایل اسمشو عوض کن ولی باید دوباره چک کنی که این اسمی که درست کردی ترکاری نباشه .

  6. #6
    کاربر دائمی آواتار merlin_vista
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    نصف جهان
    پست
    1,014
    آقا این کد را من چند وقت پیش واسه آپلود عکس نوشتم که اگه فایل را اسمش را تغییر میده به گونه ای که تکراری هیچ وقت نشه :
    //آپلود عکس
    if (this.PicFile.PostedFile.ContentLength > 300 * 150)
    {
    this.lblmaseg.Text = "";
    this.lbleror.Text = "";
    this.lbleror.Text = " تصویر بزرگ است باید اندازه آن برابر 150*300 باشد";
    return;
    }
    if (this.PicFile.PostedFile.FileName == "")
    {
    this.lblmaseg.Text = "";
    this.lbleror.Text = "";
    this.lbleror.Text = "عکس انتخاب نشده است";
    return;
    }
    string fn = this.PicFile.PostedFile.FileName;
    System.IO.FileInfo FIr = new System.IO.FileInfo(fn);

    if (FIr.Extension.ToLower() != ".jpg")
    {
    this.lblmaseg.Text = "";
    this.lbleror.Text = "";
    this.lbleror.Text = "فرمت فایل باید JPG باشد";
    return;
    }
    string pio = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString();
    string FileName = this.PicFile.PostedFile.FileName + pio + ".jpg";
    System.IO.FileInfo FI = new System.IO.FileInfo(FileName);
    string Path = this.Request.PhysicalApplicationPath;

    System.IO.FileStream FS = new System.IO.FileStream(Path + "userpic\\" + FI.Name, System.IO.FileMode.Create);
    System.IO.Stream St = this.PicFile.PostedFile.InputStream;

    byte[] b = new byte[St.Length];

    St.Read(b, 0, b.Length);
    FS.Write(b, 0, b.Length);

    St.Close();
    FS.Close();

    //

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

  7. #7
    کاربر دائمی آواتار Neo Persian
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    طهران
    سن
    40
    پست
    171
    این متود هم میتونه کمکتون کنه! با هر lenght یی که بخواین براتون string رندوم تولید میکنه

        public string getRandomKey(int bytelength)
    {
    byte[] buff = new byte[bytelength];
    RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
    rng.GetBytes(buff);
    StringBuilder sb = new StringBuilder(bytelength);
    for (int i = 0; i < buff.Length; i++)
    sb.Append(string.Format("{0:X2}", buff[i]));
    return sb.ToString();
    }

  8. #8
    کاربر دائمی آواتار abadanboy
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    شاهین شهر - اصفهان
    پست
    315

  9. #9
    میتونی از FileExist استفاده کنی و اگر وجود داشت بیاد با هر فرمولی که دوست داری فایل اسمشو عوض کن ولی باید دوباره چک کنی که این اسمی که درست کردی ترکاری نباشه .
    فایلFileExist توی asp.net1.1 هست؟؟

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

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