2011-03-10 171 views
0

我想從客戶端上傳pdf到服務器。 我甲肝使用下面的代碼..如何在服務器上傳文件?

<%@ page import="java.io.*" %> 
    <% 

String contentType = request.getContentType(); 

if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0))  { 
    DataInputStream in = new DataInputStream(request.getInputStream()); 

    int formDataLength = request.getContentLength(); 
    byte dataBytes[] = new byte[formDataLength]; 
    int byteRead = 0; 
    int totalBytesRead = 0; 

    while (totalBytesRead < formDataLength) 
    { 
     byteRead = in.read(dataBytes, totalBytesRead, formDataLength); 
     totalBytesRead += byteRead; 
    } 

    String file = new String(dataBytes); 

    String saveFile = file.substring(file.indexOf("filename=\"") + 10); 
    saveFile = saveFile.substring(0, saveFile.indexOf("\n")); 
    saveFile = saveFile.substring(saveFile.lastIndexOf("\\")+1,saveFile.indexOf("\"")); 
    int lastIndex = contentType.lastIndexOf("="); 
    String boundary = contentType.substring(lastIndex +1,contentType.length()); 
    int pos; 

    pos = file.indexOf("filename=\""); 
    pos = file.indexOf("\n", pos) + 1; 
    pos = file.indexOf("\n", pos) + 1; 
    pos = file.indexOf("\n", pos) + 1; 
    int boundaryLocation = file.indexOf(boundary, pos) - 4; 
    int startPos = ((file.substring(0, pos)).getBytes()).length; 
    int endPos = ((file.substring(0, boundaryLocation)) 
    .getBytes()).length; 
    saveFile="http://hpws1/shared_mxd/pdf/" + saveFile; 

    FileOutputStream fileOut = new FileOutputStream(saveFile); 
    fileOut.write(dataBytes, startPos, (endPos - startPos)); 
    fileOut.flush(); 
    fileOut.close(); 

    %><Br><table border="2"><tr><td><b>You have successfully 

由名上傳的文件: <%通過out.println(saveFile的); %> <% } %>

其中 「saveFile的=」 HTTP:// hpws1/shared_mxd/PDF/「+ saveFile的;」 是服務器的路徑。 但瀏覽器無法識別此路徑,並給出錯誤「文件名,目錄名或卷標語法不正確」。 我該如何解決?

+0

你想保存文件的位置? – 2011-03-10 11:38:09

回答

0

爲什麼不使用表單發送文件?像這樣:

<FORM ENCTYPE='multipart/form-data' 
method='POST' action='/myservlet'> 
<INPUT TYPE='file' NAME='mptest'> 
<INPUT TYPE='submit' VALUE='upload'> 
</FORM> 
+0

ofcourse i hav use a form like u hav shown。它的工作是正確的。問題是:上述代碼適用於我,如果我保存在本地系統本身的文件,但如果我想將它保存在服務器位置「http:// hpws1/shared_mxd/pdf /」,它是不工作.. – tamanna 2011-03-10 10:25:37

+0

任何人都可以讓我知道這個問題? – tamanna 2011-03-11 06:51:16

+0

thanx everyone但是我發現它.. – tamanna 2011-03-11 10:17:24