2013-08-14 4 views
-1

Я пытаюсь сделать Java File Upload Tutorial, и у меня есть this trouble.Ошибка FileNotFoundException

Мой файл был загружен в tmp папку File System в Linux так:

/tmp/multipartBody7066610990481359884asTemporaryFile 

У меня нет никакого идеального, чтобы изменить путь к файлу загрузки, так что я скопировать его в /myproject/public/upload/ по Java code. После этого я получил эту ошибку:

[FileNotFoundException: /home/thangnk/demo/public/upload (Is a directory)] 

I удвоенную Установите этот флажок ошибки, и я уверен, что upload папка была создана. Так кто-нибудь может сказать мне, как это исправить?

Вот мой код:

---Application.java

public class Application extends Controller { 

    public static Result index() { 
    return ok(index.render("Your new application is ready.")); 
    } 

public static Result upload() throws IOException { 
      MultipartFormData body = request().body().asMultipartFormData(); 
      FilePart picture = body.getFile("picture"); 
      if (picture != null) { 
      String fileName = picture.getFilename(); 
      String contentType = picture.getContentType(); 
      File file = picture.getFile(); 

      String orig = file.getAbsolutePath(); 
      String dest = "/home/thangnk/demo/public/upload/"; 

    //Copy file  
      InputStream in = new FileInputStream(orig); 
      OutputStream out = new FileOutputStream(dest); 
      byte[] buf = new byte[1024]; 
      int len; 
      while ((len = in.read(buf)) > 0) { 
       out.write(buf, 0, len); 
      } 
      in.close(); 
      out.close(); 

      return ok("File uploaded"); 
      } else { 
      flash("error", "Missing file"); 
      return redirect(routes.Application.index());  
      } 
     } 
} 

еще один вопрос. Какой самый простой способ загрузки изображений в Play Framework 2.0?

Спасибо за чтение !!!

+0

Попробуйте String dest = "/ home/thangnk/demo/public/upload/fileName" –

+0

Поблагодарите ihsan.It, но весь файл, который я загрузил, будет иметь то же имя. Любой идеал для этой проблемы? –

+0

fileName получает из String fileName = picture.getFilename(); , так как имя файла fileName изменяется, изменяется и наша переменная fileName. –

ответ

0

В сообщении об ошибке сообщается, что /home/thangnk/demo/public/upload- это каталог, но вы пытаетесь назвать свой файл назначения. Вам нужно добавить имя файла в конец строки dest, возможно, с dest + file.getName(). Убедитесь, что вы подумали о том, как обращаться, если кто-то пытается загрузить файл с тем же именем, что и тот, который уже существует.

+0

Thank chrylis. Это сработало замечательно. –

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