Avatar billede okidoky Nybegynder
05. maj 2006 - 13:07 Der er 1 kommentar og
1 løsning

Hjælp upload med navn

Jeg kan ikke få den til at uploade både filnavn og mit navn? filen uploades til mappe og i tabellen i db uploades den men er tom?

<!--#include file="forbindelse.asp"-->
<%
dim strAction
strAction = request("action")

select case strAction
  case "upload"
    UploadFile
  case else
    ShowForm
end select

sub ShowForm %>
<form name="form1" enctype="multipart/form-data"  method="post" action="upload.asp?action=upload">
  <table width="600" border="0" cellpadding="2" cellspacing="3" bgcolor="#CCCCCC">
    <tr>
      <td height="30" colspan="2" align="center" bgcolor="#999999" class="h">Uploade</td>
    </tr>
    <tr>
      <td width="390" class="ha">Navn</td>
      <td width="210">
        <input name="user" type="text" size="35">
</td>
    </tr>
    <tr>
      <td class="ha">Billede</td>
      <td align="center"><label>
        <input type="file" name="billede" />
      </label></td>
    </tr>
    <tr>
      <td colspan="2" align="center"><input type="submit" name="upload" value="Go"></td>
    </tr>
  </table>
</form>
<%

    end sub
sub UploadFile
  dim intPosMIMEHeader, intPosFileDataStart
  dim intPosFileNameStart, intPosFileNameEnd
  dim intPosFileDataEnd, intDataSize
  dim binData, binFileData, binFileName, binStart
  dim strFileName
  dim objFSO, objFile

  intDataSize = request.totalbytes
  binData = request.binaryread(intDataSize)

  intPosMIMEHeader = instrB(binData,chrB(13) & chrB(10)) - 1
  intPosFileDataStart = instrB(binData, chrB(13) & chrB(10) & chrB(13) & chrB(10)) + 4
  intPosFileNameStart = instrB(binData,cstrB("filename=")) + 10 
  intPosFileNameEnd = instrB(intPosFileNameStart,binData,chrB(34))
  binStart = midB(binData,1,intPosMimeHeader)
  binFileName = midB(binData,intPosFileNameStart, _
                    intPosFileNameEnd - intPosFileNameStart)
  intPosFileDataEnd = instrB(intPosMIMEHeader, binData, binStart) - 2

  strFileName = bin2str(binFileName)
  strFileName = right(strFileName, len(strFileName) - instrrev(strFileName,"\"))

  set objFSO = server.createobject("Scripting.FileSystemObject")
  set objFile = objFSO.CreatetextFile(server.mappath("img\her\" & strFileName), _
                                      true, false)
  objFile.write bin2str(midB(binData, intPosFileDataStart, _
                        intPosFileDataEnd - intPosFileDataStart))

    set tbl_img = server.CreateObject("ADODB.Recordset")
      tbl_img.Open "tbl_img", conn, 2, 2
 
      tbl_img.AddNew
 
              tbl_img("navn") = upload.form("navn")
              tbl_img("img") = strFileName
   
      tbl_img.update
 
      tbl_img.close
   
    objFile.close
      set objFile = Nothing
      set objFSO = Nothing
 
   
end sub

function bin2str(byref binS)
  ' omdanner en binær følge til en tekststreng
  dim i, strRes
  for i = 1 to lenB(binS)
    strRes = strRes & chr(ascB(midB(binS, i, 1)))
  next
  bin2str = strRes
end function


function cstrB(strS)
  ' omdanner en tekststreng til en binær følge
  dim i, binRes
  for i = 1 to len(strS)
    binRes = binRes & chrB(asc(mid(strS,i,1)))
  next
  cstrB = binRes
end function

%>
Avatar billede eagleeye Praktikant
05. maj 2006 - 16:46 #1
Når man uploader kan man ikke bruge Request.Form("xxx") man skal bruge en form collection som upload funktionen skal lave da den benytte Request.BinaryRead til at hente data med.

Så det kode du har som gemmer filen skal også lave en form collection du kan bruge.

See http://www.eksperten.dk/spm/706020
Avatar billede okidoky Nybegynder
08. maj 2006 - 20:57 #2
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester