동적으로 생성 된 여러 개의 드롭 존에서 업로드를 처리하기 위해 plupload의 단일 인스턴스를 사용하는 프로젝트에서 작업하고 있습니다. Smarty 템플릿, jQuery 및 PHP를 사용합니다. 일단 애플리케이션을 호스팅하는 서버로의 업로드가 성공하면 문서 전송이 발생하고 AWS로 문서를 전송하기 때문에 프로세스 전체에서 이월해야하는 두 가지 속성이 있습니다. 나는 plupload를 통해 초기 업로드 중에 필 요한 애트리뷰트를 수집 할 수있는 방법을 이해하기 위해 고심하고있다. 현재 파일은 로컬 서버에 잘 업로드됩니다.Plupload : 여러 동적 드롭 존의 데이터 속성을 가져옵니다.
내가 필요한 것은 행의 ID와 놓은 행의 데이터 유형 속성을 얻는 것입니다. 개찰에서는 속성 id={$doc.id}
과 data-type={$doc.id}
을 볼 수 있습니다. 이것들은 내가 수집해야 할 속성들이다. 나는 사람들을 수집하는 방법을 이해하면
<?php
session_start();
require_once(dirname(dirname(__DIR__)).'/sites/site_settings.php');
//Output passed values from plUpload
/*$fh = fopen("./request.txt",'w');
fwrite($fh, "Request Dump\n");
fwrite($fh, print_r($_REQUEST, true));
fwrite($fh, "\n\nPost Dump\n");
fwrite($fh, print_r($_POST, true));
fwrite($fh, "\n\nGET Dump\n");
fwrite($fh, print_r($_GET, true));
fwrite($fh, "\n\nServer Dump\n");
fwrite($fh, print_r($_SERVER, true));
fwrite($fh, "\n\nFiles Dump\n");
fwrite($fh, print_r($_FILES, true));
fclose($fh);*/
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(! empty($_FILES['file']))
{
if($_FILES['file']['error'] === UPLOAD_ERR_OK)
{
$path_info = pathinfo($_FILES['file']['name']);
$file_extension = strtolower($path_info["extension"]);
$extension_whitelist = array("pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx");
$doc_fk = $_FILES['file']['doc_fk'];
if(in_array($file_extension, $extension_whitelist))
{
try
{
$url = ADMIN_URL."/documents/temp/";
$path = ADMIN_PATH."/documents/temp/";
$fname = cleanFilename($_FILES['file']['name']);
if(move_uploaded_file($_FILES["file"]["tmp_name"], $path.$fname))
$ret = array("error" => 0, "path" => $url, "givenName" => $_FILES['file']['name'], "storedName" => $fname, "ext" => $file_extension, "doc_fk" => $doc_fk);
else
$ret = array("error" => 1, "error_msg" => "Failed to Upload File to System");
}
catch(Exception $e)
{
$ret = array("error" => 1, "error_msg" => $e->getMessage());
}
}
else
$ret = array("error" => 1, "error_msg" => "Invalid file type: $file_extension. File must be PDF, Word Document, Excel Spreadsheet or a PowerPoint Presentation.");
}
else
$ret = array("error" => 1, "error_msg" => "Upload Error Occurred");
}
}
else
$ret = array("error" => 1, "error_msg" => "Failed POST check: ".$_SERVER[REQUEST_METHOD]);
echo json_encode($ret);
?>
:
var dom = { uploader: $("#dropbox"),
uploads: $("ul.doc_list_container"),
dropzones: $("li.doc_list_row")
};
uploader = new plupload.Uploader({
runtimes : "html5,silverlight,html4",
browse_button : "file-pick",
container : "file-cntr",
max_file_zie : '10mb',
url : "../upload.php",
drop_element: "dropbox",
filters : {title : "Text Files", extensions : "pdf, doc, docx, xls, xlsx, ppt, pptx"},
init: {
FilesAdded: function(up, files){ up.start(); $("#file-upld-progress").fadeIn(300); },
UploadProgress: function(up, file){ $("#file-upld-progress").text(file.percent + "%"); },
UploadComplete: function(up, file) { $("#file-upld-progress").fadeOut(300, function(){ setTimeout(function(){ $("#file-upld-progress").text(''); }, 2500); }); },
FileUploaded: function(up, file, resp, src) { uploadHandler(resp.response, src); },
Error: function(up, err) { showFormMsg("alert-error", "File Upload Error #" + err.code + ": " + err.message); }
},
multipart: true,
multipart_params : {}
});
uploader.bind("BeforeUpload", handlePluploadBeforeUpload);
uploader.bind("PostInit", handlePluploadInit);
uploader.bind("FilesAdded", handlePluploadFilesAdded);
uploader.init();
uploader.bind("FileUploaded", function(up, file, resp) { uploadHandler(resp.response); });
var fileType = '';
dom.dropzones.each(function(){
var dropzone = new mOxie.FileDrop({
drop_zone: $(this).attr('id')
});
dropzone.ondrop = function(e){
uploader.addFile(this.files);
// fileType = $(this);
};
dropzone.init();
var input = new mOxie.FileInput({
browse_button: $("#file-pick")[0],
container: this,
multiple: true
});
input.onchange = function(e){
uploader.addFile(input.files);
};
input.init()
});
function handlePluploadBeforeUpload(uploader, file) {
params = uploader.settings.multipart_params;
var source = file.getSource();
// console.log(source);
// console.log(params.docType);
}
function handlePluploadInit(uploader, params){
// console.log("Initialization complete.");
// console.log("Drop-drop supported:", !! uploader.features.dragdrop);
}
function handlePluploadFilesAdded(uploader, files) {
for (var i = 0 ; i < files.length ; i++) {
files[i].docType = $(this).data('type');
}
}
그리고 upload.php로 :
여기{foreach $document_set as $doc}
<li id="file-{$doc.id}" class="doc_list_row" data-type="{$doc.id}">
<div class="row doc_list_row">
<div class="col-sm-12" style="color: #fff">
<div class="row">
<div class="col-sm-12 doc_list_title">
<h4>{$doc.name}</h4>
</div>
</div>
<div class="row">
<div class="col-sm-8">
<div class="row">
<div class="col-sm-8 padtop-10">
<p>{$doc.description}</p>
</div>
</div>
<div class="row file_details_row">
<div class="col-sm-6">
<h4>Created On:</h4>
<p>{$doc.created}</h4>
</div>
<div class="col-sm-6">
<h4>Created By:</h4>
<p>{$doc.created_by}</p>
</div>
</div>
<div class="row file_details_row">
<div class="col-sm-6">
<h4>Updated On:</h4>
<p>{$doc.last_update}</h4>
</div>
<div class="col-sm-6">
<h4>Updated By:</h4>
<p>{$doc.last_update_by}</p>
</div>
</div>
</div>
<div class="col-sm-4 mng_file_icon_container">
<div class="row">
<div id="dl-{$doc.id}" class="col-xs-6 col-sm-6 dl_icon" data-filename="fileURLWillGoHere">
<div id="dl_circle-{$doc.id}" class="dl_circle circle">
<div class="triangle-down">
</div>
<h3 class="dl_version">V.{$doc.version_depth}</h3>
</div>
</div>
<div class="col-xs-6 col-sm-6 upld_icon" data-toggle="modal" data-target="#upld_file_modal">
<div id="upld_circle-{$doc.id}" class="upld_circle circle">
<div class="triangle-up">
</div>
<h3 class="upld_version">V.{$doc.version_depth + 1}</h3>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</li>
{/foreach}
이 핸드 오프를 처리 할 수있는 jQuery를 수 있습니다 : 여기에 폼의 마크 업입니다 두 가지 속성을 통해 프로젝트의이 부분을 완료하면서 앞으로 나아갈 수있을 것입니다. 이것은 마지막 전화 끊기이며 다양한 GitHub 기사와 SO 스레드를 따라 몇 시간의 시행 착오를 겪었습니다. 나는 또한 plupload의 포럼을 언급했으며 우리가 여기에서하는 것과 아주 비슷한 것을 발견하지 못했다. TIA에 도움이 필요해!
안녕하세요 톰, 저도 같은 문제로 고민하고 있습니다. 이 문제를 해결해 봤어? 어떻게 든 div의 가치를 떨어 뜨릴 필요가 있습니다. – jmchauv
안녕하세요 @ jmchauv 저는 정말로했습니다. 잠시만 기다려주세요. 구현 방법을 다루는 코드를 게시 할 것입니다. 코드는 상황에 따라 다르므로 상급 개발자가 최종 결정을 내리는 데 도움이되었지만 올바른 방향으로 인도해야합니다. – TomJ