Categorías
PHP

Carga y descarga de archivos PHP ftp código

El siguiente es el código para cargar y descargar archivos usando la función ftp de PHP.

La interfaz será así:

La transferencia de archivos es cara. Por lo tanto, usar ftp para transferir archivos y usar el servicio web para almacenar información relacionada puede no ser la forma más eficiente.

El siguiente es el código completo. Por motivos de edición, separo el código php y html, pero debería ponerlos en el mismo archivo, que debería funcionar correctamente.

if($_POST && $_POST['action'] == 'upload'){
	if($_POST['file_title'] && $_POST['define_type_id'] && $_POST['connection_type_id']){
	$ftp_server = $_POST['host'];
	$ftp_user = $_POST['user'];
	$ftp_pass = $_POST['pass'];
 
	// set up a connection or die
	$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
	//echo $conn_id;
	// try to login
	$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);
 
	$file_id = md5($_FILES['file']['name'].time());
	$str = $_FILES['file']['name'];
	$pos = strrpos($str, '.');
	$len = strlen($str);
	$real_name = substr($str, 0, $pos);
	$file_ext = substr($str, $pos+1, $len);
 
	if (ftp_put($conn_id, $file_id.".".$file_ext, $_FILES['file']['tmp_name'], FTP_BINARY)) {
		//echo "successfully uploaded {$_FILES['file']['name']}n";
 
		$client = new SoapClient ( "http://localhost:8080/FileManagement/FileManagementService?WSDL" );
 
		$file_title = $_POST['file_title'];
		$connection_id = $_POST['connection_type_id'];
		$file_type = $_POST['define_type_id'];
 
		$result = $client->Upload(array("file_id" => $file_id,
		"file_title"=> $file_title,
		"connection_id" => $connection_id,
		"define_type_id" => $file_type,
		"real_name" => $real_name,
		"file_ext" => $file_ext
		));
 
		echo "New file uploaded!";
 
	} else {
		echo "There was a problem while uploadingn";
	}
 
	ftp_close($conn_id);
	}else{
		echo "please input every field";
	}
}elseif ($_GET && $_GET['action'] == 'delete'){
	echo "deleting";
	$client->DeleteFile(array("file_id" => $_GET['file_id']));
 
}

A continuación se muestra el código html:

<h2>Please provide the following information:</h2>
<form enctype="multipart/form-data" method="post">
<input name="MAX_FILE_SIZE" type="hidden" value="5000000" />Host 
<input name="host" type="text" />
 
Username 
<input name="user" type="text" />
 
Password 
<input name="pass" type="password" />
 
Destination directory 
<input name="dir" type="text" />
 
File 
<input name="file" type="file" />
<input name="submit" type="submit" value="Upload File" />
</form>

Proporcione la siguiente información:

Host Nombre de usuario Contraseña Directorio de destino Archivo

Categorías
PHP Web Services

Uso del servicio web PHP de Alfresco para cargar archivos

El siguiente es el código PHP para cargar archivos usando Alfresco Web Service. Pongo algunos comentarios dentro del código. Si hay algo que te confunda, deja tu comentario y espero poder ayudarte.

 if (isset($_SERVER["ALF_AVAILABLE"]) == false)
 {
 	require_once "./alfresco_sdk/remote/Alfresco/Service/Repository.php";
 	require_once "./alfresco_sdk/remote/Alfresco/Service/Session.php";
 	require_once "./alfresco_sdk/remote/Alfresco/Service/SpacesStore.php";
 	require_once "./alfresco_sdk/remote/Alfresco/Service/ContentData.php";
 }
 $repositoryUrl = "http://localhost:8080/alfresco/api";
 $userName = "admin";
 $password = "admin";
 
 // Authenticate the user and create a session
 $repository = new Repository($repositoryUrl);
 $ticket = $repository->authenticate($userName, $password);
 $session = $repository->createSession($ticket);
 
 // Create a reference to the 'SpacesStore'
 $spacesStore = new SpacesStore($session);
 
 $dir_name =  "s".$irbID;
 
 // Use a serach to get the guest home space we will use to place the new content in
 $nodes = $session->query($spacesStore, "PATH:"app:company_home/cm:testing/cm:$dir_name"");
 
 if(!empty($nodes)){
 	echo "good, no need to do anything.";
 }else{
 	$nodes = $session->query($spacesStore, "PATH:"app:company_home/cm:testing"");
 	$contentNode = $nodes[0];
 	$newSpace = $contentNode->createChild('cm_folder', 'cm_contains', 'cm_'.$dir_name);//here has to be cm_ as it is here.
 	$newSpace->cm_name = $dir_name;
 	$newSpace->cm_title = "This is a title";
 	$newSpace->cm_description = 'Description of Space';
 	$session->save();
 	unset($session);
 	$session = $repository->createSession($ticket);
 	$nodes = $session->query($spacesStore, "PATH:"app:company_home/cm:testing/cm:$dir_name"");
 }
 
 $guestHome = $nodes[0];
 
 // Get the name of the new node
 $name = $_POST['txt_docs_title'];
 
 $contentNode = $guestHome->createChild("cm_content", "cm_contains", "cm_".$name);//!!the folder's name has to begin with 'cm_' otherwise, using web service can not find it later.
 $contentNode->addAspect("cm_titled");
 
 // Set the name, title and description property values
 $contentNode->cm_name = $name;
 $contentNode->cm_title = $_POST['num_ct_ID'];
 $contentNode->cm_description = "testing description --program creek";
 
 // Set the content onto the standard content property for nodes of type cm:content.
 // We are going to assume the mimetype and encoding for ease
 $contentData = $contentNode->updateContent("cm_content", $_FILES['document']['type'], "UTF-8");
 
 // Set the content to be the content file uploaded from the client
 $contentData->writeContentFromFile($_FILES["document"]["tmp_name"]);
 
 // Save the new node
 $session->save();

Categorías
PHP

Un ejemplo simple de uso de Zend Framework Zend_Db_Table

Para ser un desarrollador PHP profesional, el framework probablemente sea una solución final. Dado que ZF es un producto de Zend, creo que no sería una mala idea si lo aprendiera, aunque no estoy seguro de qué marco es mejor. De todos modos, el mejor enfoque de aprendizaje es comenzar a estudiar ahora mismo. Aquí está mi primer ejemplo de práctica.

error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', true);
//date_default_timezone_set('Europe/London');
$rootDir = dirname(dirname(__FILE__));
//echo dirname(__FILE__); C:wampwwwzf-tutorialtestdb
//echo $rootDir;          C:wampwwwzf-tutorial
set_include_path( $rootDir . '/library'. PATH_SEPARATOR . get_include_path());
 
require_once('../library/Zend/Loader.php');
Zend_Loader::loadClass('Zend_Db');
//Zend_Loader::loadClass('Zend_Db_Table_Abstract');
Zend_Loader::loadClass('Zend_Db_Table');
//Zend_Controller_Front::run('/path/to/controllers');
//Zend::loadClass('Zend_Db');
 
$params = array (
	'host' => 'localhost',
	'username' => 'root',
	'password' => 'admin',
	'dbname' => 'zf-tutorial'
);
$db = Zend_Db::factory('PDO_MYSQL', $params);
 
Zend_Db_Table::setDefaultAdapter($db);
 
class Albums extends Zend_Db_Table_Abstract
{
	protected $_name = 'albums';
}
 
$albums = new Albums();
$data = array(
        'artist' => 'Ben',
        'title' => 'Ramsey'
);
$id = $albums->insert($data);

Por supuesto, primero debe tener una tabla de base de datos configurada en su máquina local.

Categorías
PHP

El problema de truncar texto de SQL Server en PHP

PHP y SQL Server son una combinación poderosa, sin embargo, a veces los datos almacenados en una columna de tipo de texto se truncan sin motivo aparente después de 4096 caracteres.

Tengo este problema hoy cuando quiero mostrar datos de texto de SQL Server 2000. Aparentemente, necesito aumentar el tamaño máximo de una columna de texto que PHP devolverá desde SQL Server. Ya que tengo control sobre el servidor web. Así es como solucioné el problema.

Busque php.ini y encuentre las líneas
;mssql.textlimit = 4096
y
;mssql.textsize = 4096

Reemplace el valor por 2147483647 así:
mssql.textlimit = 2147483647
mssql.textsize = 2147483647

También puede hacer lo siguiente justo después de realizar una conexión.

mssql_query("SET TEXTSIZE 2147483647");

Categorías
PHP

PHP: almacenar chino en la base de datos MySQL mediante PDO

Problema: cuando intente almacenar chino en la base de datos mysql, ??? fue almacenado.

Solución:
– establecer nombres utf8;
– establece el juego de caracteres utf8;
– establecer la intercalación del campo de la base de datos en «utf8_general_ci»

SET NAMES indica qué juego de caracteres utilizará el cliente para enviar sentencias SQL al servidor.

El siguiente código es lo que se requiere para que funcione.

[php]
encabezado (‘Tipo de contenido: texto / html; juego de caracteres = utf-8’);
intentar {
$ dbh = new PDO (‘dblib: host = your_hostname; dbname = your_db; charset = UTF-8’, $ user, $ pass);
$ dbh-> exec (‘SET CHARACTER SET utf8’);
$ dbh-> query («ESTABLECER NOMBRES utf8»);
/ * Tiene problemas con la conexión persistente, así que por ahora, use la conexión inpersistente en su lugar * /
} captura (PDOException $ e) {
print «¡Error al crear la conexión !:». $ e-> getMessage (). «
«;
morir();
}
[/php]

Aquí es una publicación sobre conceptos de codificación y juego de caracteres que todo programador DEBE conocer.