Hallo,
ich würde gerne ein Upload-Script so umbauen das es vom eigenem Server oder von einem anderem Server Files einliest und verarbeitet.
Das Formular wie auch die Datei "upload.php" habe ich soweit verkürzt das der Code übersichtlicher wird und vor allem noch immer 100% arbeitet!
Das Forumlar sieht so aus:
Die PHP-Datei (wichtigster Teil):
Die Funktion requestGPCVar('upfile_0', false, 'F') ist in einer anderen Datei. Hier das wichtigste:
Noch einmal zu meinem anliegen. Ich möchte den POST-Request umgehen wenn möglich oder wenn es sein muss mit fsocket eine Datei da reinbekommen.
Wie mache ich das? Habe erfolgreich den Code gekürzt und geändert. Meine PHP-Kenntnisse reichen aber nicht aus um das POST zu entfernen und dort direkt einen Pfad zu einer Datei anzugeben!
Danke für jede Hilfe!
ich würde gerne ein Upload-Script so umbauen das es vom eigenem Server oder von einem anderem Server Files einliest und verarbeitet.
Das Formular wie auch die Datei "upload.php" habe ich soweit verkürzt das der Code übersichtlicher wird und vor allem noch immer 100% arbeitet!
Das Forumlar sieht so aus:
Code:
<form method="post" action="/upload99.php" enctype="multipart/form-data" name="form_upload"> <input id="upfile_0_id" type="file" name="upfile_0" value="" /> <input type="submit" name="upload_action" value="page2" /> </form>
PHP-Code:
$upage = 1;
// --> DATEN DES MEDIUMS
$media_format = 'photo'; // "photo" oder "video"
$media_title = 'Test-Foto';
$media_description = 'Dies ist ein Test-Foto';
$media_access = 'public'; // "public" oder "private"
$media_tags = 'tag';
$mediaCategories = array(1, 3);
// <-- DATEN DES MEDIUMS
$upload_media_type = $media_format;
$filetype = $media_format;
// Das passiert wenn das Form abgeschickt wird:
if (isset($_REQUEST['upload_action']))
{
if ($_REQUEST['upload_action'] == "page2")
{
unset($_SESSION["upload_newmedia"]);
$arrNewMedia = array('upload_media_type' => $media_format, 'upload_media_title' => $media_title,
'upload_media_description' => $media_description, 'upload_media_access' => $media_access,
'upload_media_categories' => $mediaCategories,'upload_media_tags' => $media_tags,
'media_location_longitude' => 0.0, 'media_location_latitude' => 0.0, 'media_location_zoom' => 1);
$_SESSION["upload_newmedia"] = $arrNewMedia;
$upage = 2;
$mid = convert_media($media_format);
// gibt die url mit dem mediakey auf seite 2 aus
$smarty -> assign("MEDIA_LINK", media_link($mid, NULL, $arrNewMedia["upload_media_type"], $arrNewMedia["upload_media_title"]));
}
}
if ($upage == 1)
{
$presetMediaType_video = false;
$presetMediaType_photo = false;
switch($presetMediaType)
{
case "photo":
$presetMediaType_photo = true;
break;
case "video":
default:
$presetMediaType_video = true;
break;
}
$main -> loadBox($smarty, "upload_info_page_1");
}
$smarty -> assign("upage", $upage);
$main -> EndScript($smarty -> fetch("content/upload99.tpl"), "");
function convert_media($format) {
global $main, $main, $upage, $dbconn, $log, $login, $error_language, $form;
$log->verbose = 10;
$legitFileFormats = explode(" ", $main->getConfig($format. "_formats"));
$isFileFormatOk = false;
$fileFormat = "";
$uploadFile = requestGPCVar('upfile_0', false, 'F');
$fsplit = explode(".", $uploadFile['name']);
for($i=0; $i<count($legitFileFormats); $i++) {
if (strtolower($fsplit[count($fsplit) - 1]) == $legitFileFormats[$i]) {
$fileFormat = $legitFileFormats[$i];
$isFileFormatOk = true;
break;
}
}
$is_file_error = "";
return prepareFile($fileFormat);
}
function prepareFile($fileFormat){
global $main, $smarty, $upage, $dbconn, $log, $login, $error_language, $form, $security;
// prepare new media entry
$arrNewMedia = $_SESSION["upload_newmedia"];
$sql = "SELECT media_key FROM ".$dbconn->getTable('ost_media')." WHERE media_key = '%s'";
do {
$media_key = substr(md5(time().''.mt_rand(100000, 999999)), 0, 20);
$media = $dbconn->returnObject(sprintf($sql, $media_key));
} while ($media != false);
$arr = array();
$arr["media_users_id"] = $login -> getId();
$arr["media_title"] = $arrNewMedia["upload_media_title"];
$arr["media_desc"] = str_replace("~NWLN~","\n",str_replace("~EQLS~","=",$arrNewMedia["upload_media_description"]));
$arr["media_duration"] = "0";
$arr["media_access"] = $arrNewMedia["upload_media_access"];
$arr["media_upload_date"] = $dbconn -> getTime();
$arr["media_key"] = $media_key;
$arr["media_type"] = $arrNewMedia["upload_media_type"];
$arr["media_conversion_status"] = "converting";
$arr["media_conversion_info"] = "Conversion startet..";
$arr["media_extention"] = $fileFormat;
$mid = $dbconn -> easyInput("media", $arr);
$activityData = array(
'activity_users_id' => $login->getId(),
'activity_action' => ACTIVITY_ACTION_UPLOAD_MEDIUM,
'activity_action_id' => $mid,
'activity_date' => $dbconn->getTime()
);
$dbconn->easyInput('activity', $activityData);
$log->mid = $mid;
$smarty->assign("MEDIAKEY", $arr["media_key"]);
$mediainfo = new MediaInformation();
$mediainfo -> setTagsRaw($mid, $arrNewMedia["upload_media_tags"]);
for ($i=0; $i<count($arrNewMedia["upload_media_categories"]); $i++) {
$arr = array();
$arr["categories2media_category_id"] = $arrNewMedia["upload_media_categories"][$i];
$arr["categories2media_media_id"] = $mid;
$dbconn -> easyInput("categories2media", $arr);
}
$upage = 1;
$uploadFile = requestGPCVar('upfile_0', false, 'F');
//*************************************************************************************
//*************************************************************************************
// Upload per POST
$move_func = 'move_uploaded_file';
$uploaded_file = $uploadFile['tmp_name'];
$error_field = 'upfile_0';
//*************************************************************************************
//*************************************************************************************
//*************************** start ***************************//
if ($arrNewMedia["upload_media_type"] == "video") {
$tmp_file = $main->getConfig('path_tmp'). $mid .'.tmpvideo';
if (!$move_func($uploaded_file, $tmp_file)) {
$form->setErrorField($error_field);
$main->setErrorMessage($error_language['upload_error_unknown_upload_error']);
}
else {
if ($main->getConfig('video_save_source_video', 0)) {
if (is_dir('media/video_source/')) {
copy($tmp_file, 'media/video_source/'. $mid .'.'. $fileFormat);
}
}
startMediaConversion($mid);
$log->append('Start video conversion', 4);
$upage = 2;
}
}
elseif($arrNewMedia["upload_media_type"] == "photo") {
$tmp_file = $main->getConfig("path_tmp").$mid."_orig.".$fileFormat;
$jpg_file = $main->getConfig("base_dir").$main->getConfig("storage_photo_path").$mid."_orig".$main->getConfig("conversion_target_photo");
if($move_func($uploaded_file, $tmp_file)) {
$imageResizer = new Images();
$imageResizer->generateImage($tmp_file, $jpg_file);
if($imageResizer->generatePhoto($tmp_file, $mid)) {
$dbconn -> easyInput("media", array("media_conversion_status" => "success", "media_conversion_info" => "", "media_extention" => $fileFormat, "media_convert_extention" => substr($main->getConfig("conversion_target_photo"), 1)), "media_id = '".$mid."'");
media_ping('photo', $media_key);
unlink($tmp_file);
$upage = 2;
}
else {
$form -> setErrorField($error_field);
$main -> setErrorMessage($error_language["upload_error_image_conversion"]);
}
}
}
//*************************** end ***************************//
return $mid;
}
PHP-Code:
function requestGPCVar($name, $default, $valid_sources = 'G', $accept_html = FILTER_HTML, $callback = NULL) {
if (!$length = strlen($valid_sources)) {
return $default;
}
// If a file is requested, we handle it
if (strpos($valid_sources, 'F') !== false) {
if (!isset($_FILES[$name])) {
return array(
'name' => '',
'type' => '',
'size' => 0,
'tmp_name' => '',
'error' => UPLOAD_ERR_NO_FILE
);
}
return array(
'name' => setGPCType($_FILES[$name]['name'], ''),
'type' => setGPCType($_FILES[$name]['type'], ''),
'size' => setGPCType($_FILES[$name]['size'], 0),
'tmp_name' => setGPCType($_FILES[$name]['tmp_name'], ''),
'error' => setGPCType($_FILES[$name]['error'], 0)
);
}
}
Wie mache ich das? Habe erfolgreich den Code gekürzt und geändert. Meine PHP-Kenntnisse reichen aber nicht aus um das POST zu entfernen und dort direkt einen Pfad zu einer Datei anzugeben!
Danke für jede Hilfe!
Kommentar