2013-03-21 2 views
1

У меня есть флеш-загрузка на моем сайте для загрузки pdf-файла.as3 файл загрузка ограничение?

var myfileReference:FileReference = new FileReference(); 
down_mc.visible = false; 
down_comp.visible = false; 

var myRequest:URLRequest = new URLRequest("GEORGIA INCORPORATED.pdf"); 
myfileReference.addEventListener(IOErrorEvent.IO_ERROR, ioError); 
output_txt.text = ""; 

function ioError(event:ErrorEvent):void { 
output_txt.text = "Sorry that there is an IO error during the file downloading. The error is:" + "\n" + event; 

} 

myfileReference.addEventListener(ProgressEvent.PROGRESS, fileDownloadProgress); 

function fileDownloadProgress(event:ProgressEvent):void { 

    down_mc.visible = true; 
} 
myfileReference.addEventListener(Event.COMPLETE, fileDownloadCompleted); 

function fileDownloadCompleted(evt:Event):void { 
    down_mc.visible = false; 
    down_comp.visible = true; 

} 

function downloadFile (event:MouseEvent):void { 

    try { 
     myfileReference.download(myRequest); 
    } catch (error:SecurityError) { 

     downloading. The error is:" + "\n" + error; 

    } catch (error:IllegalOperationError) { 

     downloading. The error is:" + "\n" + error; 
    } 
    } 
b1.addEventListener(MouseEvent.CLICK, downloadFile); 

проблема некоторые люди хотят изменить имя файла, они загружают и меняющееся расширение, а также, в .pdf, что делает файл непригодным для использования. есть ли способ удержать клиентов от изменения расширения?

+1

Я думаю, что вы не можете ограничить пользователям сохранять загруженный файл с другим расширением. Это лишь часть имени файла, особенно когда дело доходит до Linux, и даже в Windows оно больше не служит решающей цели, после того, как длинные имена вводят имя + ext, объединяются в одно поле данных. – Vesper

ответ

0

В чистом as3 вы не можете заставить пользователя сохранять файл под определенным расширением. Единственный способ сделать это должен состоять в том, чтобы использовать Air, который позволяет вам управлять им через объект FileStream (вы можете выбрать имя файла).

Если вы хотите сделать это с воздуха, то вы можете сделать:

// Assuming you get your pdf raw data 
var pdfData : ByteArray; 

var f : File = File.desktopDirectory.resolvePath("myPdf.pdf"); 

// When user have select a file 
f.addEventListener(Event.SELECT, function(e:Event):void{ 
    var targetFile : File = e.target as File; 

    // Check if the selected file have pdf extension 
    if(targetFile.nativePath.substr(targetFile.nativePath.length - 4) != ".pdf") 
     // If not, add it 
     targetFile = new File(targetFile.nativePath + ".pdf"); 

    // Save the file 
    var fs : FileStream = new FileStream(); 
    fs.open(targetFile, FileMode.WRITE); 
    fs.writeBytes(pdfData); 
    fs.close(); 
}); 

// Ask user to save a file (by default on user desktop) 
f.browseForSave("Save PDF"); 
+0

спасибо, босс решил позволить им изменить то, что они хотят, это будет их собственная проклятая ошибка, если файл не работает. спасибо, хотя я дам ему выстрел в воздух :) – Guram

Смежные вопросы