2015-04-30 52 views
0

我试图在Android客户端上的文件中写入一个字节[](加密文本),然后将此文件发送到服务器(使用HTTP)。该文件在移动设备中正确创建,但是当它存储在服务器端时,它会创建一个0字节的文件。在文件中写入字节[]对象并将文件发送到服务器

这里是Android的代码写入文件

File file = new File(getExternalCacheDir(), "index.txt"); 
    FileOutputStream fout = new FileOutputStream(file); 
    ObjectOutputStream oos = new ObjectOutputStream(fout); 
    oos.writeObject(encIndex); 
    oos.close(); 

这里是servlet代码读取和文件

String fileName = request.getHeader("fileName"); 
    File saveFile = new File(SAVE_DIR + fileName); 
    // opens input stream of the request for reading data 
    InputStream inputStream = request.getInputStream(); 

    // opens an output stream for writing file 
    FileOutputStream outputStream = new FileOutputStream(saveFile); 

    byte[] buffer = new byte[BUFFER_SIZE]; 
    int bytesRead; 
    System.out.println("Receiving data..."); 

    while ((bytesRead = inputStream.read(buffer)) != -1) { 
     outputStream.write(buffer, 0, bytesRead); 
    } 

    System.out.println("Data received."); 
    outputStream.close(); 
    inputStream.close(); 

    System.out.println("File written to: " + saveFile.getAbsolutePath()); 

    file.close(); 

代码存储客户端到服务器的文件发送

File uploadFile = new File(filePath, fileName); 
    URL url = new URL(UPLOAD_URL); 
    HttpURLConnection httpConn = (HttpURLConnection)url.openConnection(); 
    httpConn.setUseCaches(false); 
    httpConn.setDoOutput(true); 
    httpConn.setRequestMethod("POST"); 
    httpConn.setRequestProperty("fileName", uploadFile.getName()); 

    OutputStream outputStream = httpConn.getOutputStream(); 
    FileInputStream inputStream = new FileInputStream(uploadFile); 
    byte[] buffer = new byte[BUFFER_SIZE]; 
    int bytesRead; 
    while ((bytesRead = inputStream.read(buffer)) != -1) { 
     outputStream.write(buffer, 0, bytesRead); 
    } 
    outputStream.close(); 
    inputStream.close(); 

由于某些原因,我无法使用套接字。 Android不显示任何错误。该服务器显示错误的是,该文件是空的/我就是在空文件操作

+0

encIndex是byte [],BUFFER_SIZE是int值为4096,SAVE_DIR是路径,我正在存储我的文件... –

+0

在服务器端记录读取内容。看不到任何将文件发送到服务器的代码。 –

+0

添加客户端到服务器文件发送代码 –

回答

0
fout.write(encIndex); 
fout.close(); 

或者

BufferedOutputStream oos = new BufferedOutputStream(fout, 
    Math.min(4086, encIndex.length)); 
oos.write(encIndex); 
oos.close(); 
相关问题