0

サーバーにファイルを保存する必要がありcadますが、アップロードを機能させることができません。私はこれを何時間も機能させようとしましたが、できません。Atm私はこれを持っています。これは私にエラーを与えます

乱数.tempは存在しません( java.io.FileNotFoundException: /home/nick/.netbeans/7.1.2/config/GF3_1/domain1/generated/jsp/lrt/upload_700679fb_13a96c78523__7ffb_00000006.tmp (No such file or directory )

package Admin;

import java.io.IOexception;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Collection;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

@WebServlet(name = "UploadServlet", urlPatterns = {"/UploadServlet"})
@MultipartConfig
public class UploadServlet extends HttpServlet {

    @Override
     protected void doPost(HttpServletRequest request, 
       HttpServletResponse responst) throws ServletException, IOException {
      Collection<Part> parts = request.getParts();
      if (parts.size() != 3) {
         //can write error page saying all details are not entered
      }
       Part filePart = request.getPart("cad");
       InputStream sInputStream = filePart.getInputStream();
       //read imageInputStream
       filePart.write(filePart.getName());
       //Read Name, String Type 
       Part namePart = request.getPart("cad");
       if(namePart.getSize() > 20){
           //write name cannot exceed 20 chars
       }
       //use nameInputStream if required        
       InputStream nameInputStream = namePart.getInputStream();
       //name , String type can also obtained using Request parameter 
       String nameParameter = request.getParameter("name");
       //Similarly can read age properties
       Part agePart = request.getPart("age");
       int ageParameter = Integer.parseInt(request.getParameter("age"));
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }
}
4

1 に答える 1

2

アップロードされたファイルを表す一時ファイルが見つかりませんでした。

パスは、NetbeansプロジェクトフォルダのGlassfish作業フォルダに保存されていることを示しています。おそらく、Netbeans内で積極的なクリーンアップ/ホットデプロイが行われていて、一時ファイルがすぐにスイープされたのでしょうか。それとも、書き込み権が不十分なだけですか?これは、例外がスローされる方法と場所のコンテキストによって異なります。これは、質問からは明らかではありません。

まず@MultipartConfig、一時ファイルを別の、もう少し永続的で書き込み可能な場所に保存するように指示することをお勧めします。例えば、

@MultipartConfig(location="/var/webapp/temp")
于 2012-10-25T12:34:04.110 に答える