0

我正在尝试将文件上传到服务器,为此我尝试了很多不同的代码,但我无法成功。

在此代码中,连接已成功创建,但在通过创建标头读取文件并将数据发布到服务器时...

class ConnectionThread extends Thread
{
    DataOutputStream outputStream = null;
    DataInputStream inputStream = null;
    String boundary =  "*****";
    String lineEnd = "\r\n";
    String twoHyphens = "--";
    int bytesRead, bytesAvailable, bufferSize;
    byte[] buffer;
    int maxBufferSize = 2*1024*1024;
    DataInputStream fileInputStream = null;

    public void run()
    {  
        try {          
          ConnectionFactory connFact = new ConnectionFactory();
          ConnectionDescriptor connDesc;
          connDesc = connFact.getConnection("http://www.myserver/upload.php");

          if (connDesc != null)
          {
              HttpConnection conn;
              conn = (HttpConnection)connDesc.getConnection();

              conn.setRequestMethod(conn.POST);

              conn.setRequestProperty("Connection", "Keep-Alive");
              conn.setRequestProperty("ENCTYPE", "multipart/form-data");
              conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);


              outputStream = new DataOutputStream( conn.openDataOutputStream() );
              outputStream.writeChars(twoHyphens + boundary + lineEnd);
              outputStream.writeChars("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + "files:///SDCard/bb.txt" +"\"" + lineEnd);
              outputStream.writeChars(lineEnd); 

              bytesAvailable = fileInputStream.available();
              bufferSize = Math.min(bytesAvailable, maxBufferSize);
              buffer = new byte[bufferSize];

              // Read file
              FileConnection fis=(FileConnection)Connector.open("file:///SDCard/bb.txt");

              InputStream inputStream = fis.openInputStream();

              ByteArrayOutputStream bos=new ByteArrayOutputStream();
              int buffersize=1024*1024;
              byte[] buffer=new byte[buffersize];
              int length=0;
              while((length=inputStream.read(buffer))!=-1)
              {
                   bos.write(buffer,0,length);
              }
              byte[] imagedata=bos.toByteArray();

              outputStream.write(imagedata);                 

              outputStream.writeChars(lineEnd);
              outputStream.writeChars(twoHyphens + boundary + twoHyphens + lineEnd);

              // Responses from the server (code and message)
              int serverResponseCode = conn.getResponseCode();
              final String serverResponseMessage = conn.getResponseMessage();                    

              fileInputStream.close();
              outputStream.flush();
              outputStream.close();
         }
    }
    catch (Exception e) {

    }
}

请有人帮忙...提前谢谢..

4

1 回答 1

0

试试这个链接,这个代码支持在服务器上使用多部分上传文件。它也可以在黑莓上运行,需要进行一些修改。

http://www.developer.nokia.com/Community/Wiki/HTTP_Post_multipart_file_upload_in_Java_ME
于 2012-08-18T19:11:28.310 回答