2015-07-05 3 views
-1

Я пытаюсь загрузить файл на свой php-сервер с помощью java, но мой httprequest терпит неудачу каждый раз, когда я запускаю код, я не знаю, в чем его причина, сначала я подумал, что это может быть вызвана методом multipartEnttity, параметры которого я оставил пустой раньше, но теперь, после заполнения его та же проблема все еще ocurrs ....Загрузка файла в java через php

//this is my java code 

    String path="E:\\upload.txt"; 
    HttpClient hc=new DefaultHttpClient(); 
    hc.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1); 
    HttpPost hp=new HttpPost("http://localhost/shoolPHP/uploadFile.php"); 
    File f=new File(path); 
    MultipartEntity me=new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 
    ContentBody cf=new FileBody(f); 
    me.addPart("userfile", cf); 
    hp.setEntity(me); 
    System.out.println("executing request" +hp.getRequestLine()); 
    HttpResponse hr=hc.execute(hp); 
    HttpEntity he=hr.getEntity(); 

    if(!(hr.getStatusLine().toString()).equals("HTTP/1.1 200 OK")){ 
     System.out.println("Uploaded"); 
    } 
    else{ 
     System.out.println("Failed"); 


    } 
    System.out.println(hr.getStatusLine()); 
    if (he != null) { 
     System.out.println(EntityUtils.toString(he)); 
    } 
    if (he != null) { 
     he.consumeContent(); 
    } 
    hc.getConnectionManager().shutdown(); 

// это исправляется PHP код

<?php 

    $uploads_dir='/Home'; 
    if(is_uploaded_file($_FILES['userfile']['tmp_name'])){ 
    $dest=$_FILES['userfile']['name']; 
    echo "File" .$_FILES['userfile']['name'] ."uploaded file successfully to 
    $uploads_dir/$dest"; 

    move_uploaded_file ($_FILES['userfile'] ['tmp_name'], "$uploads_dir/$dest"); 
    } else { 
    echo "Possible file upload attack: "; 
    echo "filename '". $_FILES['userfile']['tmp_name'] . "'."; 
    print_r($_FILES); 
    } 
    ?> 

// это новые предупреждения

исполняющих requestPOST http://localhost/shoolPHP/uploadFile.php HTTP/1.1 Загружено HTTP/1.1 200 OK Fileupload.txtuploaded файл успешно /Home/upload.txt
Предупреждение: move_uploaded_file (/Home/upload.txt): не удалось открыть поток: Нет такого файла или каталога в C: \ XAMPP \ HTDOCS \ shoolPHP \ uploadFile.php на линии

Внимание: move_uploaded_file(): Не удается переместить «C: \ XAMPP \ TMP \ phpB374. tmp 'to' /Home/upload.txt 'в C: \ xampp \ htdoc s \ shoolPHP \ uploadFile.php на линии

+0

Вы читали сообщения об ошибках и просматривали строки, на которые они ссылаются? Это базовая проверка синтаксиса. –

+0

исправил пропущенное заклинание «Файлы», но все еще существует проблема –

+0

Ну, вы пытаетесь получить доступ к папке '/ Home /' на вашей машине Windows. Не могли бы вы объяснить, какую папку вы думаете, что должно быть? Он существует? –

ответ

0

Ваш код говорит:

if(!(hr.getStatusLine().toString()).equals("HTTP/1.1 200 OK")){ 
    ^^^ 
    +--- Notice the ! (not) 

Изменить что:

if((hr.getStatusLine().toString()).equals("HTTP/1.1 200 OK")){ 

аплоада пошел в порядке если статус составляет 200, поэтому он должен равен, что строка состояния, чтобы сказать «Загружено». Ваш код сказал, что он должен отличаться от этого, чтобы сказать «Загружено»

+0

Я также исправил свой код Java, но все эти предупреждения начинаются. –

+0

У вас есть предупреждение; это не ошибка. Работает ли загрузка файла? –

+0

Создана директория, но там нет файла ..... –

Смежные вопросы