Jump to content

Air-Gear

Members
  • Content count

    16
  • Joined

  • Last visited

Community Reputation

0 Comum

About Air-Gear

  1. Quero dizer enviar os dados que foram armazenados nos campos. (url, userId, upIdAcao, upTipo e upData). Os dados vem do Front-End. Pra facilitar agora, a equipe decidiu colocar todos os campos dentro de um array. FIcou mais fácil, mas ainda não estou conseguindo enviar os dados. Segue o Front-End e Back-End. Front-End function novoUpload(nomeFoto) { data = new Date(); dia = String(data.getDate()).padStart(2, '0'); mes = String(data.getMonth() + 1).padStart(2, '0'); ano = data.getFullYear(); dataAtual = dia + '/' + mes + '/' + ano; id = $rootScope.usuario.id; //ext = path.split('.').pop(); arq = []; debugger for (i=0; i < nomeFoto.length; i++){ arq[i] = { url : "app/upload/"+nomeFoto[i].defaultValue, userId : id, upIdAcao : 2, upTipo : 1, upData : dataAtual } } debugger var obj = arq ApiSolicitacaoComprasUrl.novoUpload(obj).success(function (result) { debugger return obj; debugger }).error(function (error) { sp.loadingItem = false; }); } Back-End public class clUpload { #region insert internal static bool novoUpload(List <tbUploadSCP> obj) { tbUploadSCP uploadA = new tbUploadSCP(); using (TransactionScope ts = new TransactionScope()) { using (Repository<tbUploadSCP> repSol = new Repositoryupload()) { //string[] end = { }; for (int i = 0; i < obj.Count; i++) // foreach (var arq in obj.url) { uploadA = new tbUploadSCP { url = obj[i].url, userId = obj[i].userId, upIdAcao = obj[i].upIdAcao, upTipo = obj[i].upTipo, upData = obj[i].upData, }; repSol.Add(uploadA); } //obj.url = end[]; //var upMetaPeriodo = UpMetaPeriodo(obj); } ts.Complete(); return true; } } //Resto do código que não tem haver com o problema }
  2. Olá pessoal! Entregaram um código já montando e eu preciso fazer uma modificação na parte do campo url, já que ele é uma array de string com tamanho variado. Antes de mexer no código, já funcionava, mas o campo url pegava só a primeira posição. No Front-End que utiliza Javascript eu conseguir resolver, o Back-End que utiliza C# estou pegando agora. Eu implementei um foreach primeiro, mas vi que com for ficou melhor pra montar o código. Visual Studio não deu erro no código, mas não executou como devia. Eu tentei colocar "url = end;", mas apontou erro. Eu estou mais ou menos no caminho. Alguém pode me ajudar? Segue o código. public class clUpload { #region insert internal static bool novoUpload(tbUploadSCP obj) { tbUploadSCP uploadA = new tbUploadSCP(); using (TransactionScope ts = new TransactionScope()) { using (Repository<tbUploadSCP> repSol = new Repositoryupload()) { string[] end = { }; for (int i = 0; i < obj.url.Length; i++) { end[i] = obj.url[i].ToString(); obj.url = end[i]; } uploadA = new tbUploadSCP { url = obj.url, userId = obj.userId, upIdAcao = obj.upIdAcao, upTipo = obj.upTipo, upData = obj.upData, }; repSol.Add(uploadA); //var upMetaPeriodo = UpMetaPeriodo(obj); } ts.Complete(); return true; } } //Resto do código que não tem haver com o problema }
  3. Eu pensava que era isso, mas os dados das fotos vão ser salvos juntos com outros dados de cadastros. Pra salvar outros dados já funcionam, só preciso implementar o nomeFoto pra salvar os dados das fotos que fiz upload. Aqui vai o código com somente a parte que desenvolvi. function addItem() { if (validaAddItem()) { var objadd = { //Somente o nomeFoto para exemplificar melhor o código. "nomeFoto": $(novoUpload(impu)).value } debugger loadingItensAdicionados = true; $timeout(function () { arrayItensAdicionados.push(objadd); limparItem(); loadingItensAdicionados = false; }, 200); } } function montarSalvar() { debugger var params = { //Parte do código fica aqui no lugar do comentário. }; arrayItensAdicionados.forEach(element => { params.itens.push( { //Parte do código fica aqui no lugar do comentário. "sciNomeFoto": element.nomeFoto } ); }); return params; } O nomeFoto é um array. O outro programador passou instrução pra fazer uma função novoUpload em Javascript. Segue o código. function novoUpload(impu) { data = new Date(); debugger dia = String(data.getDate()).padStart(2, '0'); mes = String(data.getMonth() + 1).padStart(2, '0'); ano = data.getFullYear(); debugger end = "app/upload/"+impu.HTMLCollection.nomeFoto[0].namedItem(defaultValue); ext = path.split('.').pop(); dataAtual = dia + '/' + mes + '/' + ano; debugger id = $rootScope.usuario.id; url = arq.end; userId = arq.id; upIdAcao = arq.nome; upTipo = 1; upData = arq.dataAtual; //upArray = arq. return arq; } Inspecionei o código e foi necessário implementar o HTMLCollection5, mas nunca usei e não sei se é assim, pois não mostrou o erro no Console da Inspeção do Código. Onde estou errando?
  4. Na realidade é uma função para pegar o novo nome do arquivo e salvar no Banco de Dados. Eu vou conferir o código que você passou, valeu! EDIT: Pra ser exato, eu vou pegar os novos nomes em um array chamado nomeFoto. Eu preciso salvar esses nomes, ID de usuário que enviou, datas de envio e outras informações para depois verificar quem o enviou as imagens e direcionaras urls.
  5. Bom, eu não fiquei parado. Eu acrescentei esse código dentro do EOF. echo<<<EOF <p>Nome: {$sFileName}</p> <p>Tamanho: {$sFileSize}</p> <input id="hidden" type="text" onchange="novoUpload()" name="nomeFoto[{$i}]" disabled value={$nome_final}> <p></br></p> EOF; O novoUpload() é uma função Javascript que estou tentando chamar, mas não funciona. Eu posso fazer deste jeito?
  6. Olá, na parte de enviar eu conseguir, mas manter até terminar o cadastro eu não conseguir. Eu vou contar toda a história para ficar mais claro possível. Eu precisei implementar um Upload de qualquer imagem ou PDF na página de solicitar compras. O site utiliza AngularJS, a primeira versão do Angular. Eu tentei fazer sem depender de PHP, mas na internet achava só a parte de Front-End e ninguém sabia fazer no Back-End. Então eu resolvi fazer com PHP mesmo. Nó código PHP, ele aceita todos as extensões de imagens mais o PDF e é possível envia-los todos de uma vez na quantidade que quiser. Todos os arquivos serão renomeados, contendo no nome o ID do usuário logado pego pela função javascript, o dia do mês, o mês, o ano, o dia da semana, a hora, o minuto, o segundo, se é AM ou PM e uma numeração aleatório. O arquivo PDF vai continuar sendo PDF e todas as imagens serão JPG. No final, todos serão enviados para uma pasta chamada upload. Só que agora eu preciso jogar de volta para página para salvar os novos nomes dos arquivos para continuar o cadastro da solicitação de compras. Como AngularJS utiliza Javascript, eu tentei usa-lo dentro do PHP utilizando EOF, mas não tive resultado. Eu só consigo com HTML com as diretivas do AngularJS. Na parte do API, nos atributos, eu declarei "nomeArquivo: []," , para salvar os nomes dos arquivos. Seguem o código. <div class="row"> <div class="col-sm-12 col-md-6 "> <div class="upload_form_cont"> <form id="upload_form" enctype="multipart/form-data" method="post" action="/profile-upload"> <div> <div><label for="image_file">Selecione o arquivo de imagem</label></div> <div><input type="file" name="image_file" id="image_file" accept="image/*" onchange="fileSelected();" /></div> </div> <div> <input type="button" value="Upload" onclick="startUploading()" /> </div> <div id="fileinfo"> <div id="filename"></div> <div id="filesize"></div> <div id="filetype"></div> <div id="filedim"></div> </div> <div id="error">Você deve selecionar apenas arquivos de imagem válidos!</div> <div id="error2">Ocorreu um erro ao enviar o arquivo</div> <div id="abort">O upload foi cancelado pelo usuário ou o navegador interrompeu a conexão</div> <div id="warnsize">Seu arquivo é muito grande. Não podemos aceitar isso. Selecione arquivos pequenos</div> <div id="progress_info"> <div id="progress"></div> <div id="progress_percent">&nbsp;</div> <div class="clear_both"></div> <div> <div id="speed">&nbsp;</div> <div id="remaining">&nbsp;</div> <div id="b_transfered">&nbsp;</div> <div class="clear_both"></div> </div> <div id="upload_response"></div> </div> </form> </div> </div> </div> upload.php <?php function bytesToSize1024($bytes, $precision = 2) { $unit = array('B','KB','MB'); return @round($bytes / pow(1024, ($i = floor(log($bytes, 1024)))), $precision).' '.$unit[$i]; } //Pega o id do usuário logado $id_url = $_GET['id']; // Numero de campos de upload $numeroCampos = count($_FILES['image_file']['name']); // Tamanho máximo do arquivo (em bytes) $tamanhoMaximo = 1024*1024*2; // Extensões aceitas $extensoes = array(".jpg", "jpeg", ".gif", ".png", ".pdf", ".bmp", ".pdf", ".tiff"); //Local da pasta $_UP['pasta'] = '../upload/'; $substituir = false; for ($i = 0; $i < $numeroCampos; $i++) { // Informações do arquivo enviado $sFileName = $_FILES['image_file']['name'][$i]; $sSize = $_FILES['image_file']['size'][$i]; $sFileSize = bytesToSize1024($sSize, 1); $nomeTemporario = $_FILES['image_file']['tmp_name'][$i]; // Verifica se o arquivo foi colocado no campo if (!empty($sFileName)) { $erro = false; // Verifica se o tamanho do arquivo é maior que o permitido if ($sSize > $tamanhoMaximo) { $erro = "O arquivo " . $sFileName . " não deve ultrapassar " . $tamanhoMaximo. " bytes"; } // Verifica se a extensão está entre as aceitas elseif (!in_array(strrchr($sFileName, "."), $extensoes)) { $erro = "A extensão do arquivo <b>" . $sFileName . "</b> não é válida"; } // Verifica se o arquivo existe e se é para substituir elseif (file_exists($_UP['pasta'] . $sFileName) and !$substituir) { $erro = "O arquivo <b>" . $sFileName . "</b> já existe"; } else{ //Pega a extensão do arquivo $TipoExtensao = pathinfo($sFileName, PATHINFO_EXTENSION); // O arquivo passou em todas as verificações, hora de tentar movê-lo para a pasta // Primeiro verifica se deve trocar o nome do arquivo $unixTime = time(); $timeZone = new \DateTimeZone('America/Sao_Paulo'); $time = new \DateTime(); $time->setTimestamp($unixTime)->setTimezone($timeZone); $formattedTime = $time->format('d-m-Y_l_h-i-s-a'); $aleatorio = rand(); if($TipoExtensao == 'pdf'){ $nome_final = $id_url .'_'. $formattedTime .'_'. $aleatorio .'.pdf'; }else{ $nome_final = $id_url .'_'. $formattedTime .'_'. $aleatorio .'.jpg'; } // Depois verifica se é possível mover o arquivo para a pasta escolhida if (move_uploaded_file($nomeTemporario, $_UP['pasta'] . $nome_final)) { // Upload efetuado com sucesso, exibe uma mensagem e um link para o arquivo echo "Upload do arquivo ".$sFileName." foi efetuado com sucesso!"; echo "</br>"; echo<<<EOF <p>Eu tentei implementar o retorno da página aqui!</p> <p></br></p> <p></br></p> EOF; } else { // Não foi possível fazer o upload, provavelmente a pasta está incorreta echo "Não foi possível enviar o arquivo, tente novamente"; echo "</br>"; } } } else { echo "Selecione algum arquivo de imagem ou PDF para fazero upload."; } } ?>
  7. Air-Gear

    Dúvidas na instalação do projeto existente no Laravel

    OK, vamos por partes. Eu instale o Wampserver mais recente que tem o PHP 7.2.10 , acima do mínimo requisito. Reinstalei o Composer com essa versão do PHP e finalmente usei composer install. A instalação ocorreu tudo bem. Acessei a pasta public e exibiu esse erro: Illuminate \ Database \ QueryException (1045) SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (SQL: select * from `inicios` where `inicios`.`id` = 1 limit 1) EDIT: Já resolvi! No arquivo .env eu só precisei tirar a senha do localhost. Tá rodado tudo certo.
  8. Olá a todos! Eu comecei mexer com Laravel hoje e até conseguir criar um novo projeto, mas eu preciso abrir e rodar um projeto existente e não estou conseguindo. Ele pede o arquivo autoload.php que não está no projeto. Eu já instalei o Banco de Dados desse projeto sem problemas. Eu instalei o Composer, mas não coloquei a URL de referência. Eu uso o Wamp Server 3.0.6, com Apache 2.4.23, PHP 5.6.25 e MySQL 5.7.14. Eu preciso instalar mais alguma coisa? Esqueci de fazer alguma configuração? Por favor, preciso de ajuda.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.