2013-11-27 2 views
0

"äüö.txt"라는 이름의 파일을 업로드하면 ftp-server의 파일 이름이 "-956.txt"가됩니다. 이는 파일 이름에 특수 문자가 포함 된 경우에만 발생합니다. 이 문제를 어떻게 해결할 수 있습니까?fineuploader - 특수 문자 인코딩

HTML 코드 :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org /TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta charset="utf-8"> 
<script src="jquery-1.10.2.min.js"></script> 
<script src="custom.fineuploader-4.0.3.js" type="text/javascript"></script> 



<script type="text/template" id="qq-template-manual-noedit"> 
<div class="qq-uploader-selector qq-uploader"> 
    <div class="qq-upload-drop-area-selector qq-upload-drop-area" qq-hide-dropzone> 
     <span>Drop files here to upload</span> 
    </div> 
    <div class="qq-upload-button-selector qq-upload-button"> 
     <div>Upload a file</div> 
    </div> 
    <span class="qq-drop-processing-selector qq-drop-processing"> 
     <span>Processing dropped files...</span> 
     <span class="qq-drop-processing-spinner-selector qq-drop-processing-spinner"></span> 
    </span> 
    <ul class="qq-upload-list-selector qq-upload-list"> 
     <li> 
      <div class="qq-progress-bar-container-selector"> 
       <div class="qq-progress-bar-selector qq-progress-bar"></div> 
      </div> 
      <span class="qq-upload-spinner-selector qq-upload-spinner"></span> 
      <span class="qq-upload-file-selector qq-upload-file"></span> 
      <span class="qq-upload-size-selector qq-upload-size"></span> 
      <a class="qq-upload-cancel-selector qq-upload-cancel" href="#">Cancel</a> 
      <span class="qq-upload-status-text-selector qq-upload-status-text"></span> 
     </li> 
    </ul> 
</div> 
</script> 


<script type="text/javascript"> 
    $(document).ready(function() { 
    var manualuploader = $("#fine-uploader-fileUploadEmailCampaigns").fineUploader({ 
     autoUpload: false, 
     multiple: false, 
     template: "qq-template-manual-noedit", 
     editFilename: { 
      enabled: false 
     }, 
     request: { 
      endpoint: 'endpoint.php' 
     }, 
    }); 

    $('#triggerUpload').click(function() { 
     manualuploader.fineUploader('uploadStoredFiles'); 
    }); 


}) 
</script> 

<title>Unbenanntes Dokument</title> 
    <link href="custom.fineuploader-4.0.3.min.css" rel="stylesheet" type="text/css"/> 


</head> 

<body> 
    <div id="fine-uploader-fileUploadEmailCampaigns"> 
</div> 
<div id="triggerUpload" class="btn btn-primary" style="margin-top: 10px;">Upload</div> 

</body> 
</html> 

PHP 코드 :

<?php 

// Include the upload handler class 
require_once "handler.php"; 


$uploader = new UploadHandler(); 

// Specify the list of valid extensions, ex. array("jpeg", "xml", "bmp") 
$uploader->allowedExtensions = array(); // all files types allowed by default 

// Specify max file size in bytes. 
$uploader->sizeLimit = 10 * 1024 * 1024; // default is 10 MiB 

// Specify the input name set in the javascript. 
$uploader->inputName = "qqfile"; // matches Fine Uploader's default inputName value  bydefault 

// If you want to use the chunking/resume feature, specify the folder to temporarily  save parts. 
$uploader->chunksFolder = "chunks"; 

$method = $_SERVER["REQUEST_METHOD"]; 
if ($method == "POST") { 
    header("Content-Type: text/plain"); 

    // Call handleUpload() with the name of the folder, relative to PHP's getcwd() 
    $result = $uploader->handleUpload("files"); 

    // To return a name used for uploaded file you can use the following line. 
    $result["uploadName"] = $uploader->getUploadName(); 

    echo json_encode($result); 
} 
else { 
    header("HTTP/1.0 405 Method Not Allowed"); 
} 

?> 

답변

0

내 생각 엔 당신이 파일을 쓰기 위해 사용하는 로케일 ($ LANG가)의 로케일과 일치하지 않는다는 것입니다 귀하의 OS. 예를 들어, 내 개발 환경 (OS X, Java 7, IntelliJ)의 이름에 영문이 아닌 파일을 올바르게 작성하려면 JVM과 연관된 LANG 환경 변수가 "en_US.UTF-8"인지 확인해야합니다 ", OS X에 설정된 $ LANG 변수와 일치합니다.