|
upload image with HTTPRequest |
Débuté par E. Meijer, 05 nov. 2013 13:14 - 8 réponses |
| |
| | | |
|
| |
Posté le 05 novembre 2013 - 13:14 |
Hi,
I want to upload an image taken with the Android tablet to a php server. I managed to get it working on the Windev Simulator, but on the Android tablet it does not work. It seems that the server receives a file with zero length. This is my code:
DataToSend is Buffer iFileID = fOpen(sFilePath, foReadWrite) IF iFileID <> -1 THEN iSize = fSize(iFileID) DataToSend = fRead(iFileID, iSize) END fClose(iFileID)
sContentType = "application/octet-stream" IF HTTPRequest(gsRequestUrl + URLEncode(sRequest), gsUserAgent, "", DataToSend, sContentType) THEN sResponse = HTTPGetResult() ELSE sResponse = "" sHTTPError = HTTPGetResult(httpHeader) END
Thanks in advance for the help.
Kind regards, Edwin Meijer |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 15 mai 2014 - 14:13 |
PROCEDURE CAM_ImagemToArrayBytes(LOCAL PathImagem, LOCAL Tipo)
//Converter a imagem de um local do disco em Array de Bytes e gravar via webservice ///////////////////////////////////////////////////////////////////////////////////
ImagemArrayBytes is Buffer = ""
IF Tipo = "" OR Tipo = 0 THEN ImagemArrayBytes = fLoadBuffer(PathImagem) ELSE IF Tipo = 1 ImagemArrayBytes = fLoadBuffer(T020Arquivo.PathUrl020) //Compactacao// ImagemArrayBytes = Crypt(ImagemArrayBytes,"",cryptNone) //ImagemArrayBytes = URLEncode(ImagemArrayBytes) END
RESULT(ImagemArrayBytes) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 15 mai 2014 - 14:13 |
PROCEDURE CAM_ImagemToArrayBytes(LOCAL PathImagem, LOCAL Tipo)
//Converter a imagem de um local do disco em Array de Bytes e gravar via webservice ///////////////////////////////////////////////////////////////////////////////////
ImagemArrayBytes is Buffer = ""
IF Tipo = "" OR Tipo = 0 THEN ImagemArrayBytes = fLoadBuffer(PathImagem) ELSE IF Tipo = 1 ImagemArrayBytes = fLoadBuffer(T020Arquivo.PathUrl020) //Compactacao// ImagemArrayBytes = Crypt(ImagemArrayBytes,"",cryptNone) //ImagemArrayBytes = URLEncode(ImagemArrayBytes) END
RESULT(ImagemArrayBytes) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 15 mai 2014 - 14:14 |
PROCEDURE CAM_Enviar2WS(LOCAL ArquivoLocal,... LOCAL Extensao,... LOCAL Ambiente,... LOCAL Crypto,... LOCAL OpcaoEscolha,... LOCAL CodigoArquivo,... LOCAL CodOs,... LOCAL CodOsItem,... LOCAL NomeArquivo,... LOCAL Descricao,... LOCAL VideoFoto,... LOCAL TempoSegundos,... LOCAL FPS,... LOCAL DebugSN) //info("CAM_Enviar2WS") IF gsDebugSN = "S" DebugSN="S" END //Nao usados ArquivoLocal = ArquivoLocal Extensao = Extensao Ambiente = Ambiente OpcaoEscolha = OpcaoEscolha CodigoArquivo = CodigoArquivo NomeArquivo = NomeArquivo TempoSegundos = TempoSegundos FPS = FPS //Verifica GPS Ligado e retona para variaveis globais a latitude e longitude GPS_LatitudeLongitudeAtual("") IF gsLatitude = "" THEN gsLatitude = 0 gsLongitude = 0 END IF ConexaoInternet(0) = 1 AND Crypto <> "" THEN IF DebugSN = "S" THEN Info("Com conexão ok") END Crypto = WS_Criptografia(GloLogin +"-"+ GloSenha +"-"+ GloImei, "C", DebugSN) //Verifica IF DebugSN = "S" THEN NextTitle("MotolinkOs") Info(Crypto, CodigoArquivo, CodOsItem, NomeArquivo, Descricao, VideoFoto, DebugSN) END //Autenticacao request is GetAutenticacao response is GetAutenticacaoResponse Autentica, sTeste1, sTeste2, sTeste3, sTeste4 is string = "" //Dados: request.chave = Crypto //Chave passada por parametro IF DebugSN = "S" THEN Info("Cripto: "+Crypto) END //Envio response = GetAutenticacao(request) IF ErrorOccurred = True THEN sTeste1 = response.GetAutenticacaoResult.Erro sTeste2 = response.GetAutenticacaoResult.Erro.Mensagem sTeste3 = response.GetAutenticacaoResult.Erro.Numero sTeste4 = response.GetAutenticacaoResult.Erro.Descricao NextTitle("Erro na autenticacao:") Info(sTeste1,sTeste2,sTeste3,sTeste4) ELSE Autentica = response.GetAutenticacaoResult.Chave IF DebugSN = "S" THEN Info("Autenticacao OK",Autentica) END IF DebugSN = "S" AND Autentica <> "" THEN NextTitle("MotolinkOs") Info("OK- Autenticou",Autentica) ELSE IF DebugSN = "S" AND Autentica = "" NextTitle("MotolinkOs") Info("Erro na autenticacao",Autentica, VideoFoto, Crypto) END //Envio do arquivo //Busca registro HReadSeekFirst(T020Arquivo,T020Arquivo.CodArquivo020,CodigoArquivo) IF HFound(T020Arquivo) = False THEN IF DebugSN = "S" THEN NextTitle("MotolinkOs") Info("Erro: Faltou parametros ou dados não encontrados...", ErrorInfo(),ErrorOccurred) END ELSE IF HFound(T020Arquivo) = True THEN IF DebugSN = "S" THEN NextTitle("MotolinkOs") Info("Achou o registro a ser enviado",VideoFoto) END //Webservice //Conecta com o metodo do webservice requestfoto is ArquivoGravar responsefoto is ArquivoGravarResponse //Converter a imagem de um local em Array de Bytes e gravar via webservice /////////////////////////////////////////////////////////////////////////// ImagemArrayBytes is Buffer = fLoadBuffer(T020Arquivo.PathUrl020) IF DebugSN = "S" THEN Info(Length(ImagemArrayBytes)) END /////////////////////////////////////////////////////////////////////////// //Dados: requestfoto.autenticacao = Autentica requestfoto.codOrdemServico = CodOs requestfoto.codOrdemServicoStatus = CodOsItem requestfoto.descricao = Descricao requestfoto.data = Middle(DateSys(),1,4) +"-"+ Middle(DateSys(),5,2) +"-"+ Middle(DateSys(),7,2) //Ano-mes-dia requestfoto.latitude = gsLatitude requestfoto.longitude = gsLongitude requestfoto.arquivo = ImagemArrayBytes //-----------tipo foto ou video IF VideoFoto = "Foto" requestfoto.codTipoArquivo = 1 ELSE IF VideoFoto = "Video" requestfoto.codTipoArquivo = 2 ELSE requestfoto.codTipoArquivo = 1 END //-----------tipo foto ou video //Envia responsefoto = ArquivoGravar(requestfoto) IF ErrorOccurred = True THEN sTeste1 = responsefoto.ArquivoGravarResult.Erro sTeste2 = responsefoto.ArquivoGravarResult.Erro.Descricao sTeste3 = responsefoto.ArquivoGravarResult.Erro.Mensagem sTeste4 = responsefoto.ArquivoGravarResult.Erro.Numero NextTitle("Erro no envio da Foto") Info(CodOsItem,Descricao,sTeste1,sTeste2,sTeste3,sTeste4) ELSE
T020Arquivo.Enviada020 = "S" HModify(T020Arquivo) NextTitle("MotolinkOs") Info("OK-Enviou a foto para o webservice com sucesso.") END END IF fFileExist(T020Arquivo.PathUrl020) = False THEN NextTitle("MotolinkOs") Info("Caminho inexistente ou em branco!...") END END END Close() Close() |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 15 mai 2014 - 14:14 |
PROCEDURE CAM_ResizeImage(LOCAL PathFileOrigemJpg is string, LOCAL PathFileDestinoJpg, LOCAL Horizontal, LOCAL Vertical, LOCAL DebugSN)
IF gsDebugSN = "S" DebugSN="S" END IF Horizontal = "" OR Horizontal = 0 OR Vertical = "" OR Vertical = 0 THEN Info("Não foi definido o tamanho Horizontal e Vertical da imagem") ok = False END IF PathFileOrigemJpg <> "" AND PathFileDestinoJpg <> "" HReadSeekFirst(T000Config,T000Config.CodConfig000,27) IF HFound(T000Config) = True AND T000Config.Valor000 <> "" THEN Horizontal = Middle(T000Config.Valor000,1,3) Vertical = Middle(T000Config.Valor000,5,3) ok = VideoGenerateThumbnail(PathFileOrigemJpg, PathFileDestinoJpg, Horizontal, Vertical) ELSE ok = VideoGenerateThumbnail(PathFileOrigemJpg, PathFileDestinoJpg, 640, 480) END
IF fFileExist(PathFileDestinoJpg) THEN IF ok = True AND DebugSN = "S" Info("Redimensionamento realizado com sucesso!") ok = True END ELSE IF DebugSN = "S" Info("Falha no redimensionamento da imagem!") ok = False END END ELSE Info("Nome da imagem não foi definido!...") ok = False END RESULT(ok) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 15 mai 2014 - 14:15 |
// Summary: <specify the procedure action> // Syntax: //[ <Result> = ] CAM_RotateImage (<PathImagem>, <Angulo>, <DebugSN>) // // Parameters: // PathImagem: <specify the role of Arquivo> // Angulo: <specify the role of Angulo> // DebugSN: <specify the role of DebugSN> // Return Value: // boolean: // None // // For instance: // Indicate an example. // PROCEDURE CAM_RotateImage(LOCAL PathImagem, LOCAL Angulo, LOCAL DebugSN)
//Existe Configuracao HReadSeekFirst(T000Config,T000Config.CodConfig000,26) IF HFound(T000Config) = True AND T000Config.Valor000 = "SIM" IF PathImagem <> "" AND Angulo <> "" WIN_Camera_FullScreen.IMG_Rotate = PathImagem ok = dRotation(WIN_Camera_FullScreen.IMG_Rotate, Angulo) IF ok = False AND DebugSN = "S" THEN Info("Operação de Rotação Falhou") ELSE IF ok = True AND DebugSN = "S" Info("Rotação ok") END ELSE Info("Parametros de rotação de imagem vazios nas configurações...") END END IF ok = True ok = dSaveImageJPEG(WIN_Camera_FullScreen.IMG_Rotate, PathImagem) IF ok = False THEN Error("Erro ao salvar imagem") END END
RESULT(ok) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 15 mai 2014 - 14:15 |
PROCEDURE CAM_CompressaoJpeg(LOCAL Compressao) okimg is boolean = False //Modifica a resolucao da imagem criada IF Compressao <> "" WIN_Camera_Desenvolvimento.CAM_Camera = Arquivo IF Compressao = 100 THEN okimg = dSaveImageJPEG(WIN_Camera_Desenvolvimento.CAM_Camera,Arquivo,100,imgProgressiveJPEG) ELSE IF Compressao = 90 okimg = dSaveImageJPEG(WIN_Camera_Desenvolvimento.CAM_Camera,Arquivo,90,imgProgressiveJPEG) ELSE IF Compressao = 80 okimg = dSaveImageJPEG(WIN_Camera_Desenvolvimento.CAM_Camera,Arquivo,80,imgProgressiveJPEG) ELSE IF Compressao = 70 okimg = dSaveImageJPEG(WIN_Camera_Desenvolvimento.CAM_Camera,Arquivo,70,imgProgressiveJPEG) ELSE IF Compressao = 60 okimg = dSaveImageJPEG(WIN_Camera_Desenvolvimento.CAM_Camera,Arquivo,60,imgProgressiveJPEG) ELSE IF Compressao = 50 okimg = dSaveImageJPEG(WIN_Camera_Desenvolvimento.CAM_Camera,Arquivo,50,imgProgressiveJPEG) ELSE IF Compressao = 40 okimg = dSaveImageJPEG(WIN_Camera_Desenvolvimento.CAM_Camera,Arquivo,40,imgProgressiveJPEG) ELSE IF Compressao = 30 okimg = dSaveImageJPEG(WIN_Camera_Desenvolvimento.CAM_Camera,Arquivo,30,imgProgressiveJPEG) ELSE IF Compressao = 20 okimg = dSaveImageJPEG(WIN_Camera_Desenvolvimento.CAM_Camera,Arquivo,20,imgProgressiveJPEG) ELSE IF Compressao = 10 okimg = dSaveImageJPEG(WIN_Camera_Desenvolvimento.CAM_Camera,Arquivo,10,imgProgressiveJPEG) END WIN_Camera_Desenvolvimento.CAM_Camera = Arquivo END RESULT(okimg) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 16 janvier 2020 - 12:57 |
Procedure UI_VerArquivo()
IF gnidDocumentoCliente = 0 THEN Info("Nenhum arquivo selecionado!") RETURN END
IF HReadSeek(T002_ARQUIVOS,T002_ARQUIVOSID,gnidDocumentoCliente,hIdentical) THEN IF HFound(T002_ARQUIVOS) THEN fMakeDir("C:\Temp\") path_arquivo is string = T002_ARQUIVOS.T002_PATH nome_arquivo is string = Lower(fExtractPath(path_arquivo,fFileName)) nome_extensao is string = Lower(fExtractPath(path_arquivo,fExtension)) bufArquivo is Buffer SWITCH nome_extensao CASE ".pdf" MyInternalWindow..Plane = 2 bufArquivo = T002_ARQUIVOS.T002_ARQUIVO IF fSaveBuffer("C:\Temp\Arquivo.pdf",bufArquivo) = True THEN control_pdf = "C:\Temp\Arquivo.pdf" END CASE ".docx" MyInternalWindow..Plane = 4 bufArquivo = T002_ARQUIVOS.T002_ARQUIVO IF fSaveBuffer("C:\Temp\Arquivo.docx",bufArquivo) = True THEN word_control = "C:\Temp\Arquivo.docx" END CASE ".xlsx" MyInternalWindow..Plane = 5 bufArquivo = T002_ARQUIVOS.T002_ARQUIVO IF fSaveBuffer("C:\Temp\Arquivo.xlsx",bufArquivo) = True THEN excel_control = "C:\Temp\Arquivo.xlsx" END CASE ".jpg"
MyInternalWindow..Plane = 3 bufArquivo = T002_ARQUIVOS.T002_ARQUIVO IF fSaveBuffer("C:\Temp\Arquivo.jpg",bufArquivo) = True THEN control_img = "C:\Temp\Arquivo.jpg" END
CASE ".jpeg" MyInternalWindow..Plane = 3 bufArquivo = T002_ARQUIVOS.T002_ARQUIVO IF fSaveBuffer("C:\Temp\Arquivo.jpeg",bufArquivo) = True THEN control_img = "C:\Temp\Arquivo.jpeg" END
CASE ".png" MyInternalWindow..Plane = 3 bufArquivo = T002_ARQUIVOS.T002_ARQUIVO IF fSaveBuffer("C:\Temp\Arquivo.png",bufArquivo) = True THEN control_img = "C:\Temp\Arquivo.png" END
OTHER CASE END ELSE Info("Erro ao abrir o Documento!") END END
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 16 janvier 2020 - 12:57 |
Procedure UI_CarregarArquivo()
IF EDT_Descricao = "" OR EDT_Descricao = Null THEN Info("Digite um nome para o Arquivo") SetFocus(EDT_Descricao) RETURN ELSE Arquivo is array of string Arquivo = UI_Selecione_Imagem() SWITCH Arquivo[2] CASE ".pdf" MyInternalWindow..Plane = 2 control_pdf = Arquivo[1] CASE ".docx" MyInternalWindow..Plane = 4 word_control = Arquivo[1] CASE ".xlsx" MyInternalWindow..Plane = 5 excel_control = Arquivo[1] CASE ".jpg" MyInternalWindow..Plane = 3 control_img = Arquivo[1] CASE ".jpeg" MyInternalWindow..Plane = 3 control_img = Arquivo[1] CASE ".png" MyInternalWindow..Plane = 3 control_img = Arquivo[1] OTHER CASE END IF gnidDocumentoCliente > 0 THEN HReadSeek(T002_ARQUIVOS, T002_ARQUIVOSID,gnidDocumentoCliente,hIdentical) ELSE HReset(T002_ARQUIVOS) END IF T002_ARQUIVOS.T002_ARQUIVOSID > 0 THEN T002_ARQUIVOS.AUDT_Data_Upd = DateSys() + TimeSys() T002_ARQUIVOS.AUDT_User_Upd = GnUserID T002_ARQUIVOS.T002_ARQUIVO = fLoadBuffer(Arquivo[1]) T002_ARQUIVOS.T002_TABELA_ORIGEM = "ARQUIVOS PRONTUARIO-PACIENTE" T002_ARQUIVOS.T002_ID_ORIGEM = pIDCliente T002_ARQUIVOS.T002_DESCRICAO = EDT_Descricao T002_ARQUIVOS.T002_FOTOCLIENTE = "N" T002_ARQUIVOS.T002_PATH = Arquivo[1] T002_ARQUIVOS.T002_NOMEARQUIVO = Arquivo[4] T002_ARQUIVOS.T002_EXTENSAO = Arquivo[2] T002_ARQUIVOS.T002_ARQUIVO = fLoadBuffer(Arquivo[1]) T002_ARQUIVOS.T002_DATA_CADASTRO = DateSys + TimeSys() HReadSeek(T011_PROFISSIONAIS,T011_PROFISSIONAISID,GnUserID,hIdentical) T002_ARQUIVOS.T002_PROFISSIONAL = T011_PROFISSIONAIS.T011_NOME T002_ARQUIVOS.AUDT_Excluido = "N" T002_ARQUIVOS.t002_OBSERVACOES = EDT_OBSERVACOES IF HModify(T002_ARQUIVOS) THEN ToastDisplay("Arquivo atualizado com sucesso",toastShort,vaMiddle,haCenter,RGB(0,0,255)) END ELSE gnidDocumentoCliente = GET_SEQ(T002_ARQUIVOS) T002_ARQUIVOS.T002_ARQUIVOSID = gnidDocumentoCliente T002_ARQUIVOS.AUDT_User_Add = GnUserID T002_ARQUIVOS.AUDT_Data_Add = DateSys + TimeSys() T002_ARQUIVOS.T002_ARQUIVO = fLoadBuffer(Arquivo[1]) T002_ARQUIVOS.T002_TABELA_ORIGEM = "ARQUIVOS PRONTUARIO-PACIENTE" T002_ARQUIVOS.T002_ID_ORIGEM = pIDCliente T002_ARQUIVOS.T002_DESCRICAO = EDT_Descricao T002_ARQUIVOS.T002_FOTOCLIENTE = "N" T002_ARQUIVOS.T002_PATH = Arquivo[1] T002_ARQUIVOS.T002_NOMEARQUIVO = Arquivo[4] T002_ARQUIVOS.T002_EXTENSAO = Arquivo[2] T002_ARQUIVOS.T002_ARQUIVO = fLoadBuffer(Arquivo[1]) T002_ARQUIVOS.T002_DATA_CADASTRO = DateSys + TimeSys() HReadSeek(T011_PROFISSIONAIS,T011_PROFISSIONAISID,GnUserID,hIdentical) T002_ARQUIVOS.T002_PROFISSIONAL = T011_PROFISSIONAIS.T011_NOME T002_ARQUIVOS.AUDT_Excluido = "N" T002_ARQUIVOS.t002_OBSERVACOES = EDT_OBSERVACOES IF HAdd(T002_ARQUIVOS,hForceIdAuto) = True THEN ToastDisplay("Arquivo carregado com sucesso",toastShort,vaMiddle,haCenter,RGB(0,0,255)) ELSE Info("Erro Tela: "+gsTela+", Erro ao carregar, tente novamente ou fale com o administrador do sistema",ErrorInfo()) gbResultSave = False END END END
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | | | |
| | |
|