PDA

View Full Version : سوال در مورد کنترل UploadControl



shervinrv
جمعه 17 تیر 1390, 11:19 صبح
سلام دوستان من در استفاده از کنترل UplodControl کنترل مربوط به شرکت Dx مشکل دارم
کنترل رو داخل فرم قرار میدم و وقتی ران میکنم پروژه رو میتونم فایل انتخاب کنم و .... و فایل به لیست اضافه میشه
ولی اولا وقتی دکمه آپلود رو میزنم هیچ عملی انجام نمیده ثانیا من میخوام یه سری عملیات اضافه تر هم انجام بدم و یه سری اطلاعات از فایل آپلود شده رو موقع آپلود تو دیتا بیس بریزم ولی نمیتونم تو محیز کد نویسی برای این کنترل کدی بنویسم
مثلا رو یه کنترل دبل کلیک کنی میبرتت تو صفحه کد که براش کد بنویسی ولی واسه این کنترل اینجوری نیست
ممنون میشم کمکم کنید

shervinrv
جمعه 17 تیر 1390, 14:31 عصر
به هر زحمتی بود راهش انداختم
الان 2 تا مشکل دارم
یکی همون که گفتم میخوام بعد از اپلود هر فایل یه سری کارهای اضافی انجام بدم
ادیت :
خب این مشکلم حل شد در کد XAML واسه این کنترل یه پراپرتی تعریف میشه به نام FileUploadCompleted
هر مقداری که به این پراپرتی دادیم به همون اسم توی کد هامون یه روال درست میکنیم
که هر فایل که آپلود میشه اون روال یک بار اجرا میشه
حالا اونجا هرچی میخوایم مینویسیم



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

یک مشکل دیگه هم هست اونم اینکه نمیدونم فایلارو کجا میریزه
آدرس مثلا میده C ولی نیست با اینکه میگه آپلود شد

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

shervinrv
سه شنبه 21 تیر 1390, 13:08 عصر
خیلی ممنون از کمک همه دوستان http://www.pic4ever.com/images/6asmnhy.gif http://www.pic4ever.com/images/6asmnhy.gif
در مورد متوقف شدن وسط آپلود مشکل حل شد
من هرچی در مورد این کنترل فهمیدم اینجا میذارم که اگه یه وقت کسی به مشکل خورد حداقل یه تاپیک فارسی موجود باشه و مثل من مجبور نشه دست به دامن اجنبی ها بشه

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

<%@ WebHandler Language="VB" Class="Handler" %>

Imports Microsoft.VisualBasic
Imports System
Imports System.IO
Imports System.Web
Imports System.Web.Services

Public Class Handler
Implements IHttpHandler
Private privateFilePath As String
Private Property FilePath() As String
Get
Return privateFilePath
End Get
Set(ByVal value As String)
privateFilePath = value
End Set
End Property
Private privateFileName As String
Private Property FileName() As String
Get
Return privateFileName
End Get
Set(ByVal value As String)
privateFileName = value
End Set
End Property
Private privatePackageCount As Integer
Private Property PackageCount() As Integer
Get
Return privatePackageCount
End Get
Set(ByVal value As Integer)
privatePackageCount = value
End Set
End Property
Private privatePackageNumber As Integer
Private Property PackageNumber() As Integer
Get
Return privatePackageNumber
End Get
Set(ByVal value As Integer)
privatePackageNumber = value
End Set
End Property
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property

' Implements the IHttpHandler.ProcessRequest method.
' Is called each time a new package is received from the client.
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
ProcessQueryString(context)
ProcessFile(context)
End Sub

' Processes the query string to extract the parameters' values.
Private Sub ProcessQueryString(ByVal context As HttpContext)
Dim query = context.Request.QueryString
FilePath = Uri.UnescapeDataString(query("filePath"))
FileName = Uri.UnescapeDataString(query("fileName"))
PackageCount = Integer.Parse(query("packageCount"))
PackageNumber = Integer.Parse(query("packageNumber"))
End Sub

' Reads data from the input stream and writes it to the specified file.
Private Sub ProcessFile(ByVal context As HttpContext)
Dim serverFileName As String = GetServerPath(context.Server, FilePath, FileName)
Dim fileMode As FileMode = _
If(File.Exists(serverFileName) AndAlso PackageNumber > 0, _
fileMode.Append, _
fileMode.Create)
Using reader As New BinaryReader(context.Request.InputStream)
Using writer As New BinaryWriter(File.Open(serverFileName, fileMode))
Dim buffer(4095) As Byte
Dim bytesRead As Integer
bytesRead = reader.Read(buffer, 0, buffer.Length)
Do While bytesRead <> 0
writer.Write(buffer, 0, bytesRead)
bytesRead = reader.Read(buffer, 0, buffer.Length)
Loop
End Using
End Using
End Sub

' Gets the local path to the target file from the file and directory names provided by the client.
Private Function GetServerPath(ByVal server As HttpServerUtility, _
ByVal filePath As String, _
ByVal fileName As String) As String
Return server.MapPath(Path.Combine(filePath, Path.GetFileName(fileName)))
End Function
End Class

یه مشکل جدید هم پیدا کردم باهاش
اونم اینکه max filesize به صورت in32 هست و بیشترین مقداری که میگیره 2147483647 هست که میشه حدودا 250 مگابایت
تو فورومش پرسیدم اگه راه حلی بود همینجا میگم اگه نبودم که باید با این کامپاننت خداحافظی کنیم