Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    codifica caratteri per Upload file in POST

    Salve,
    avri bisogno cortesemente di qualcuno che mi desse una mano con il seguente problema.

    Sto eseguendo uno script VB che chiama una pagina php passando un file testo in POST.
    La pagina php lo salva nella cartella import e poi lo elabora.

    Il problema sta nel fatto che il file nella richiesta post è corretto, dopo il salvataggio nella cartella del server web mi trovo le lettere accentate sostituite da carateri strani.

    Codice che chiama la pagina web:
    codice:
    Const STR_BOUNDARY  As String = "3fbd04f5-b1ed-4060-99b9-fca7ff59c113"
    Dim nFile           As Integer
    Dim baBuffer()      As Byte
    Dim sPostData       As String
    
    '--- read file
    nFile = FreeFile
    Open sPath For Binary Access Read As nFile
    If LOF(nFile) > 0 Then
        ReDim baBuffer(0 To LOF(nFile) - 1) As Byte
        Get nFile, , baBuffer
        sPostData = StrConv(baBuffer, vbUnicode)
        'MsgBox sPostData
    End If
    Close nFile                                     'Content-Type: text/html; charset=ISO-8859-1
    '--- prepare body
    sPostData = "--" & STR_BOUNDARY & vbCrLf & _
    "Content-Disposition:  form-data; name=""userfile""; filename=""" &  Mid$(sFileName,  InStrRev(sFileName, "\") + 1) & """" & vbCrLf  & _
    "Content-Type: application/octet-stream" & vbCrLf & vbCrLf & _
    sPostData & vbCrLf & _
    "--" & STR_BOUNDARY & "--"
    '--- post
    
    With CreateObject("Microsoft.XMLHTTP")
        .Open "POST", sUrl, bAsync
        .setRequestHeader "Content-Type", " multipart/form-data; boundary=" & STR_BOUNDARY
        .send CVar(sPostData)
    
    If .Status >= 400 And .Status <= 599 Then
            skebbyGatewayGetCredit = "status=failed&message=" & .Status & " - " & .statusText
            Exit Function
    End If
     
    msg = .responseText
    End With

    se da VB salvo su file CVar(sPostData) della send ho ancora le lettere accentate al loro posto


    La pagina PHP ha il seguente codice:
    Codice PHP:
        require_once ('class.PSRequest.php');
        
    $uploaddir 'import/';
        
    $uploadfile $uploaddir basename($_FILES['userfile']['name']);
        if (
    move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
            
    //echo "File is valid, and was successfully uploaded.\n";
        
    } else {
            
    //echo "Possibile attacco tramite file upload!\n";
        

    Il file che mi ritrovo nella cartella import ha le lettere accentate sostituite da caratteri strani.

    Ci sto uscendo matto.

    Grazie infinite

    Andrea

  2. #2
    dico una cavolata, ma non è che per caso è colpa del programma che usi per aprire il file in lettura? Prova a controllare che usi il charset corretto per visualizzare le stringhe

    altrimenti puoi provare a simulare la richiesta con programmi esterni al vb, che so, advanced rest client o curl ?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.