PDA

View Full Version : تعریف نام نسبی برای آپلود عکس بر روی سرور



arman174
چهارشنبه 08 اسفند 1386, 01:06 صبح
سلام دوستان
من میخواهم طبق کد زیر عکسهایی را که آپلود می کنم با نام های خودشان و یا حتی با IDموجود در بانک از طریق DataSet تغییر نام پیدا کنند. ولی طبق این کد همیشه یک عکس آپلود شده و همه نیز هم نام می باشند.
با تشکر

<%@ Page %>
<script runat="server">
Sub Button_Click( s As Object, e As EventArgs )
inpFileUp.PostedFile.SaveAs( "c:\img\pop.gif" )
End Sub
</script>
<html>
<head>
<title>HtmlInputFile.aspx</title>
</head>
<body>
<form enctype="multipart/form-data" runat="Server">
<input id="inpFileUp" type="file" runat="Server" />
<p>
<asp:Button id="Button1" onclick="Button_Click" Runat="Server" Text="Upload File!"></asp:Button>
</p>
</form>
</body>
</html>

mp2009
چهارشنبه 08 اسفند 1386, 01:22 صبح
اسم عکس رو اون آخر ننویس .
به جاش اینو بنویس
inpFileUp.PostedFile.SaveAs( "c:\img\"+ inpFileUp.PostedFile.FileName
)

arman174
چهارشنبه 08 اسفند 1386, 02:28 صبح
اسم عکس رو اون آخر ننویس .
به جاش اینو بنویس
inpFileUp.PostedFile.SaveAs( "c:\img\"+ inpFileUp.PostedFile.FileName
)

سلام طبق گفته شما انجام دادم ولی باز هم همین مشکل هست . ایندفعه قسمت آخر رو نشون می ده.
نام فایل می شه : + inpFileUp.PostedFile.FileName
و برای همه باز هم یک عکس می یاره وبیشتر زا یک عکس نشون نمی ده.

Neo Persian
چهارشنبه 08 اسفند 1386, 10:13 صبح
از این متد برای تولید یک رشته تصادفی استفاده کنید:


public static string GetRandomString(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();
}

mojniknam
چهارشنبه 08 اسفند 1386, 12:13 عصر
من برای تولید یه رشته تصادفی معمولا از ساعت بهره گیری میکنم!!!
یعنی میام از الگوی زیر استفاده میکنم
دقیقه+ثانیه+میلی ثانیه
تا حالا که جواب داده

hossein1368
جمعه 10 اسفند 1386, 09:22 صبح
بیا عزیزم با کد اول میتونی بزرگترین id توی تیبلتو دربیاری و بعد یه واحد بهش اضافه کنی (id سطر جدیدی که میخواد add بشه )



strcommand = "SELECT MAX(id) FROM tbl_images"
Dim temp As Int64
cmd = New SqlCommand(strcommand, cnn)
Try
temp = Convert.ToInt64(cmd.ExecuteScalar())
temp = temp + 1
Catch ex As Exception
temp = 1
EndTry


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



FileUpload1.PostedFile.SaveAs(Server.MapPath(".\\" + "pics\pic" + temp.ToString() + IO.Path.GetExtension(FileUpload1.PostedFile.FileNa me.ToString())))

cmd.Parameters.AddWithValue("@picurl", "Pics\pic" + temp.ToString() + IO.Path.GetExtension(FileUpload1.PostedFile.FileNa me.ToString()))


این کار اصولی تر از ایجاد رشته تصادفیه فکر میکنم مشکلتو حل کنه
لازمه که آدرسارو هم متناسب با نیازت تغییر بدی

فایلات روی هاست اینطوری ذخیره میشه
p1.پسوند فایل ارسالی
p2.پسوند فایل ارسالی
p3.پسوند فایل ارسالی
....

a_true_2004
شنبه 11 اسفند 1386, 03:28 صبح
همیشه یک عکس آپلود شده و همه نیز هم نام می باشند.

کدت رو تست نکردم اما اگه با ویندوز XP کار میکنی و عکسها رو به حالت Thumbnails میبینی باید بهت بگم که من هم همین مشکل رو داشتم و وقتی دو عکس همنام رو با کدی مثل کد تو ذخیره میکردم در حالت Thumbnails فقط عکس اولی رو نشون میداد.پس شما باید برای هر فایلی که آپلود میشه با یکی از روشها یک اسم جدید به فایل بدی که هیچوقت دو فایل روی هم ذخیره نشن. روش من استفاده از

System.Guid.NewGuid().ToString()
هست که یک رشته تولید میکنه مثل بعضی از کلید های Registery ویندوز که عمراً تکراری در بیاد.


با نام های خودشان و یا حتی با IDموجود در بانک از طریق DataSet تغییر نام پیدا کنند
بعد از اینکه ID طرف رو بدست آوردی یک فولدر به اسم اون ID درست کن و به این صورت فایلهای هر کاربر رو در فولدری به اسم خود کاربر ذخیره کن

pikoolas
سه شنبه 20 بهمن 1388, 17:48 عصر
بیا عزیزم با کد اول میتونی بزرگترین id توی تیبلتو دربیاری و بعد یه واحد بهش اضافه کنی (id سطر جدیدی که میخواد add بشه )



strcommand = "SELECT MAX(id) FROM tbl_images"
Dim temp As Int64
cmd = New SqlCommand(strcommand, cnn)
Try
temp = Convert.ToInt64(cmd.ExecuteScalar())
temp = temp + 1
Catch ex As Exception
temp = 1
EndTry


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



FileUpload1.PostedFile.SaveAs(Server.MapPath(".\\" + "pics\pic" + temp.ToString() + IO.Path.GetExtension(FileUpload1.PostedFile.FileNa me.ToString())))

cmd.Parameters.AddWithValue("@picurl", "Pics\pic" + temp.ToString() + IO.Path.GetExtension(FileUpload1.PostedFile.FileNa me.ToString()))


این کار اصولی تر از ایجاد رشته تصادفیه فکر میکنم مشکلتو حل کنه
لازمه که آدرسارو هم متناسب با نیازت تغییر بدی

فایلات روی هاست اینطوری ذخیره میشه
p1.پسوند فایل ارسالی
p2.پسوند فایل ارسالی
p3.پسوند فایل ارسالی
....
این روش هم اصولی نیست .چون اگه در یک لحظه 2 نفر در فرم باشند و با هم فایل آپلود کنن اون کسی که دوم فایل آپلود میکنه فایلش رو فایل نفر اولی save می شه.