2011-03-10 139 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