file tipinde gönderilen post değişkenini almak

Web tabanlı uygulama geliştirme araçları(PHP, ASP vb...) ile ilgili konuları buraya yazabilirsiniz.
Cevapla
Kaptan
Üye
Mesajlar: 395
Kayıt: 01 Tem 2005 04:02

file tipinde gönderilen post değişkenini almak

Mesaj gönderen Kaptan »

Selam.
type i file olan bir form değişkeninin dosya adını almak istiyorum.
Nasıl alabilirim?
Asp kullanıyorum.
request.querystring ile olmuyor.
Ancestor
Üye
Mesajlar: 188
Kayıt: 27 Ara 2004 06:12
Konum: Manisa - Kırkağaç

Mesaj gönderen Ancestor »

konuyu biraz daha açarsanız daha iyi olur, sanırım sorununuzu fso ile halledebilirsiniz.
Kaptan
Üye
Mesajlar: 395
Kayıt: 01 Tem 2005 04:02

Mesaj gönderen Kaptan »

bir formda post edilen bir değer var.

Kod: Tümünü seç

<FORM  ACTION="upload.asp" METHOD=POST>
<STRONG>Dosya adı...</STRONG><BR><BR>
<b><INPUT  NAME="File1" style="font-family: Verdana; font-size: 10pt; font-weight: bold; border: 1px solid #254a83; padding: 0; background-color: #ffffff; color:#254a83"  SIZE="30"  TYPE="file"><BR><BR>
<INPUT type="submit" value="Upload"  style="font-family: Verdana; font-size: 8pt; font-weight: bold; border: 1px solid #254a83; padding: 0; background-color: #ffffff; color:#254a83"><BR><BR></td>
</form>
dosya upload işlemi gerçekleşiyor.Ben post edilen sayfada yani upload.asp sayfasında dosyanın ismini ve uzantısını almak istiyorum.örneğin kaptan.txt gibi.

Kod: Tümünü seç

<INPUT  NAME="File1"
File1 isimli dosya ismini yani.
upload.asp sayfasında fso işlemi gerçekleşiyor.ben bir de dosya ismini veritabanına kaydetmek istiyorum.

upload.aspdeki kodlar şu şekilde.burdan dosya ismini almaya çalıştım ama olmadı.filename değişkeninin içi boş gözüküyor.

Kod: Tümünü seç

	ForWriting = 2
	adLongVarChar = 201
	lngNumberUploaded = 0
	
	'Get binary data from form		
	noBytes = Request.TotalBytes 
	binData = Request.BinaryRead (noBytes)
	
	'convery the binary data to a string
	Set RST = CreateObject("ADODB.Recordset")
	LenBinary = LenB(binData)
	
	if LenBinary > 0 Then
	RST.Fields.Append "myBinary", adLongVarChar, LenBinary
	RST.Open
	RST.AddNew
	RST("myBinary").AppendChunk BinData
	RST.Update
	strDataWhole = RST("myBinary")
	End if

	strBoundry = Request.ServerVariables ("HTTP_CONTENT_TYPE")
	lngBoundryPos = instr(1, strBoundry, "boundary=") + 8 
	strBoundry = "--" & right(strBoundry, len(strBoundry) - lngBoundryPos)
	lngCurrentBegin = instr(1, strDataWhole, strBoundry)
	lngCurrentEnd = instr(lngCurrentBegin + 1, strDataWhole, strBoundry) - 1
	Do While lngCurrentEnd > 0
	'Get the data between current boundry and remove it from the whole.

	strData = mid(strDataWhole, lngCurrentBegin, lngCurrentEnd - lngCurrentBegin)
	strDataWhole = replace(strDataWhole, strData,"")
	
	'Get the full path of the current file.
	lngBeginFileName = instr(1, strdata, "filename=") + 10
	lngEndFileName = instr(lngBeginFileName, strData, chr(34)) 
	
	
	'Make sure they selected a file.	
	if lngBeginFileName = lngEndFileName and lngNumberUploaded = 0 Then
	Response.Redirect "default.asp?"
	End if
	'There could be an empty file box.	
	if lngBeginFileName <> lngEndFileName Then
	strFilename = mid(strData, lngBeginFileName, lngEndFileName - lngBeginFileName)

	tmpLng = instr(1, strFilename, "\")
	Do While tmpLng > 0
	PrevPos = tmpLng
	tmpLng = instr(PrevPos + 1, strFilename,"\")
	Loop
	
	FileName = right(strFilename, len(strFileName) - PrevPos)
	
	lngCT = instr(1,strData, "Content-Type:")
	
	if lngCT > 0 Then
	lngBeginPos = instr(lngCT, strData, chr(13) & chr(10)) + 4
	Else
	lngBeginPos = lngEndFileName
	End if
	lngEndPos = len(strData) 
	
	'Calculate the file size.	
	lngDataLenth = lngEndPos - lngBeginPos
	'Get the file data	
	strFileData = mid(strData, lngBeginPos, lngDataLenth)
	'Create the file.	
	Set fso = CreateObject("Scripting.FileSystemObject")
	Set f = fso.OpenTextFile(server.mappath(ImageDir) & "/" & FileName, ForWriting, True)

	
	f.Write strFileData
		
	Set f = nothing
	Set fso = nothing
	
	lngNumberUploaded = lngNumberUploaded + 1
			
	End if
	
	lngCurrentBegin = instr(1, strDataWhole, strBoundry)
	lngCurrentEnd = instr(lngCurrentBegin + 1, strDataWhole, strBoundry) - 1
	loop
	
	
	


Dim Baglantim, dsn
Veri="DBQ=" & Server.Mappath("dosya.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
Set baglantim=Server.Createobject("ADODB.Connection")
baglantim.open Veri
sql="insert into tablo1 (dosya) values ('"&adi&"')"
baglantim.execute(sql)
Ancestor
Üye
Mesajlar: 188
Kayıt: 27 Ara 2004 06:12
Konum: Manisa - Kırkağaç

Mesaj gönderen Ancestor »

dosyaadi = Request.Form("file1")

şeklinde post methodu ile gönderilen verileri alabilirsiniz.
Request.QueryString ile Get methodu ile gönderilen veriler alınabilir.
Kaptan
Üye
Mesajlar: 395
Kayıt: 01 Tem 2005 04:02

Mesaj gönderen Kaptan »

Request nesnesi, ASP 0206 (0x80004005)
Request.Form topluluğu kullanıldıktan sonra, BinaryRead çağrılamaz.

hatası veriyor.
Ancestor
Üye
Mesajlar: 188
Kayıt: 27 Ara 2004 06:12
Konum: Manisa - Kırkağaç

Mesaj gönderen Ancestor »

küçük bir denemeyle bende yaptım ve gerekli bilgiyi aldı

Kod: Tümünü seç

<body>

<form method="post" action="deneme.asp?gorev=al"><p>
  <input type="file" name="dosya" size="20"><input type="submit" value="Gönder" name="B1"><input type="reset" value="Sıfırla" name="B2"></p>
</form>


<%if Request.QueryString("gorev") = "al" then
dosyaadi = Request.Form("dosya")
Response.write dosyaadi
end if%>
</body>
Vt'ye kayıt işlemini upload işleminden sonra yaparsanız sanırım çalışır.
Kaptan
Üye
Mesajlar: 395
Kayıt: 01 Tem 2005 04:02

Mesaj gönderen Kaptan »

Hocam saolun size de zahmet oldu.
Fakat sorunu yine çözemedim.vtye kayıt işini sonra yaptığımda da

Request nesnesi, ASP 0207 (0x80004005)
BinaryRead çağrıldıktan sonra, Request.Form topluluğu kullanılamaz.

hatası veriyor. :?
Ancestor
Üye
Mesajlar: 188
Kayıt: 27 Ara 2004 06:12
Konum: Manisa - Kırkağaç

Mesaj gönderen Ancestor »

upload kodlarınızı incelerken gözüme biyer çarptı
FileName = right(strFilename, len(strFileName) - PrevPos)
burada dosya ismini FileName değişkenine eşitliyor. Hiç Request.Form kodunu kullanmadan bu değişken sayesinde vt'ye kaydı yapabilirsiniz.
Kaptan
Üye
Mesajlar: 395
Kayıt: 01 Tem 2005 04:02

Mesaj gönderen Kaptan »

onu da denedim olmadı.ordaki kodlar çalışmıyor sanırım.o kısımda response.write "deneme" yazdım fakat ekrana deneme yazmadı.
inceliyorum.kafa kalmadı incelemekten.uykum da geldi.
Ancestor
Üye
Mesajlar: 188
Kayıt: 27 Ara 2004 06:12
Konum: Manisa - Kırkağaç

Mesaj gönderen Ancestor »

Benim kullandığım upload kodlarını gönderiyim, eğer server'ınızda Dundas upload bileşeni yüklüyse hiç sorunsuz çalışır.

Kod: Tümünü seç

		Case "Dundas"
			Set objUpload = Server.CreateObject("Dundas.Upload")
			With objUpload
				.UseVirtualDir = True
				.UseUniqueNames = False
				.SaveToMemory()
				strNewFileName = .GetFileName(.Files(0).OriginalPath)
				strNewFileName = Replace(strNewFileName, " ", "_", 1, -1, 1)
				strNewFileName = formatFileName(strNewFileName)
				lngErrorFileSize = fileSize(.Files(0).Size, intMaxFileSize)
				blnExtensionOK = fileExtension(strNewFileName, saryFileUploadTypes)
				If lngErrorFileSize = 0 AND blnExtensionOK Then
					.Files(0).SaveAs "kaydedilecekyol/" & strNewFileName
					fileUpload = strNewFileName
				End If
			End With
			Set objUpload = Nothing
Kolay gelsin
Cevapla