Expand Up
@@ -7,7 +7,6 @@
import javax .inject .Inject ;
import javax .inject .Named ;
import javax .servlet .ServletException ;
import javax .servlet .http .HttpServlet ;
import javax .servlet .http .HttpServletRequest ;
import javax .servlet .http .HttpServletResponse ;
Expand All
@@ -23,73 +22,90 @@
import org .uberfire .java .nio .file .Path ;
public class FileUploadServlet
extends HttpServlet {
extends BaseFilteredServlet {
private static final Logger logger = LoggerFactory .getLogger (FileUploadServlet .class );
private static final Logger logger = LoggerFactory .getLogger ( FileUploadServlet .class );
@ Inject
@ Named ("ioStrategy" )
private IOService ioService ;
@ Override
protected void doPost (HttpServletRequest request , HttpServletResponse response ) throws ServletException , IOException {
protected void doPost ( HttpServletRequest request ,
HttpServletResponse response ) throws ServletException , IOException {
try {
if (request .getParameter ("path" ) != null ) {
writeFile (ioService .get (new URI (request .getParameter ("path" ))), getFileItem (request ));
if ( request .getParameter ( "path" ) != null ) {
final URI uri = new URI ( request .getParameter ( "path" ) );
if ( !validateAccess ( uri , response ) ) {
return ;
}
writeFile ( ioService .get ( uri ), getFileItem ( request ) );
writeResponse ( response , "OK" );
} else if ( request .getParameter ( "folder" ) != null ) {
final URI uri = new URI ( request .getParameter ( "folder" ) + "/" + request .getParameter ( "fileName" ) );
if ( !validateAccess ( uri , response ) ) {
return ;
}
writeResponse (response , "OK" );
} else if (request .getParameter ("folder" ) != null ) {
writeFile (
ioService .get (new URI ( request . getParameter ( "folder" ) + "/" + request . getParameter ( "fileName" )) ),
getFileItem (request ) );
ioService .get ( uri ),
getFileItem ( request ) );
writeResponse (response , "OK" );
writeResponse ( response , "OK" );
}
} catch (FileUploadException e ) {
logError (e );
writeResponse (response , "FAIL" );
} catch (URISyntaxException e ) {
logError (e );
writeResponse (response , "FAIL" );
} catch ( FileUploadException e ) {
logError ( e );
writeResponse ( response , "FAIL" );
} catch ( URISyntaxException e ) {
logError ( e );
writeResponse ( response , "FAIL" );
}
}
private FileItem getFileItem (HttpServletRequest request ) throws FileUploadException {
Iterator iterator = getServletFileUpload ().parseRequest (request ).iterator ();
while (iterator .hasNext ()) {
private FileItem getFileItem ( HttpServletRequest request ) throws FileUploadException {
Iterator iterator = getServletFileUpload ().parseRequest ( request ).iterator ();
while ( iterator .hasNext () ) {
FileItem item = (FileItem ) iterator .next ();
if (!item .isFormField ()) {
if ( !item .isFormField () ) {
return item ;
}
}
return null ;
}
private void writeResponse (HttpServletResponse response , String ok ) throws IOException {
response .setContentType ("text/html" );
response .getWriter ().write (ok );
private void writeResponse ( HttpServletResponse response ,
String ok ) throws IOException {
response .setContentType ( "text/html" );
response .getWriter ().write ( ok );
}
private ServletFileUpload getServletFileUpload () {
FileItemFactory factory = new DiskFileItemFactory ();
ServletFileUpload upload = new ServletFileUpload (factory );
upload .setHeaderEncoding ("UTF-8" );
ServletFileUpload upload = new ServletFileUpload ( factory );
upload .setHeaderEncoding ( "UTF-8" );
return upload ;
}
private void writeFile (Path path , FileItem uploadedItem ) throws IOException {
if (!ioService .exists (path )) {
ioService .createFile (path );
private void writeFile ( Path path ,
FileItem uploadedItem ) throws IOException {
if ( !ioService .exists ( path ) ) {
ioService .createFile ( path );
}
ioService .write (path , IOUtils .toByteArray (uploadedItem .getInputStream ()) );
ioService .write ( path , IOUtils .toByteArray ( uploadedItem .getInputStream () ) );
uploadedItem .getInputStream ().close ();
}
private void logError (Throwable e ) {
logger .error ("Failed to upload a file." , e );
private void logError ( Throwable e ) {
logger .error ( "Failed to upload a file." , e );
}
}