You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android图片上传至DirectAdmin服务器失败问题排查(附代码)

Android图片上传至DirectAdmin主机成功但目录无文件问题

我开发了一款支持上传JPEG、PNG、JPG、GIF格式图片到服务器的Android应用,应用提示上传完成,但在DirectAdmin 1.657主机的对应目录中找不到上传的图片。

DirectAdmin主机上的PHP上传脚本

<?php
 $target_dir = "/domains/sample.com/public_html/user-images";
 $target_file = $target_dir . basename($_FILES["file"]["name"]); 


 if ($_FILES["file"]["error"] > 0) {
 echo "something when wrong when uploading the file: " . $_FILES["file"]["error"];
} else {
if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
    echo "Ang file " . basename( $_FILES["file"]["name"]). " uploaded.";
} else {
    echo "something went wrong when uploading the file";
}
}
?>

Android应用中的Activity代码

public class DataseSorterForDebugOnlyPart2 extends AppCompatActivity {

private static final String UPLODS_URL = "http://example.com/upload.php";
private EditText fileNameEditText;

@SuppressLint("SetTextI18n")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.databasesortformat_2);

    fileNameEditText = findViewById(R.id.file_name);
    Button uploadButton = findViewById(R.id.upload_button);

    uploadButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String fileName = "Picsart_24-01-14_22-19-59-832";
            if (!fileName.isEmpty()) {
                new UploadFileAsync().execute("/storage/emulated/0/Pictures/Picsart/Picsart_24-01-14_22-19-59-832.png");
            } else {
                Toast.makeText(DataseSorterForDebugOnlyPart2.this, "Enter file name", Toast.LENGTH_SHORT).show();
            }
        }
    });
}

private class UploadFileAsync extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... params) {
        String fileName = params[0];
        String responseString = "";

        try {
            URL url = new URL(BaseUrl.UPLOAD);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("POST");
            connection.setDoOutput(true);

            String boundary = "*****";
            String lineEnd = "\r\n";

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

            DataOutputStream dos = new DataOutputStream(connection.getOutputStream());

            // File
            File file = new File(fileName);
            FileInputStream fis = new FileInputStream(file);
            dos.writeBytes("--" + boundary + lineEnd);
            dos.writeBytes("Content-Disposition: form-data; name=\"file\";filename=\"" + fileName + "\"" + lineEnd);
            dos.writeBytes(lineEnd);

            int bytesAvailable = fis.available();
            int bufferSize = Math.min(bytesAvailable, 1024);
            byte[] buffer = new byte[bufferSize];
            int bytesRead = fis.read(buffer, 0, bufferSize);

            while (bytesRead > 0) {
                dos.write(buffer, 0, bufferSize);
                bytesAvailable = fis.available();
                bufferSize = Math.min(bytesAvailable, 1024);
                bytesRead = fis.read(buffer, 0, bufferSize);
            }

            dos.writeBytes(lineEnd);
            dos.writeBytes("--" + boundary + "--" + lineEnd);

            int serverResponseCode = connection.getResponseCode();
            String serverResponseMessage = connection.getResponseMessage();
            Log.i("RERE", serverResponseMessage);

            if (serverResponseCode == HttpURLConnection.HTTP_OK) {
                responseString = "File Uploaded Successfully";
            } else {
                responseString = "File Upload Failed";
            }

            fis.close();
            dos.flush();
            dos.close();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return responseString;
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
    }
}

}

更新:我发现问题出在主机端,图片并没有完成上传。
更新:我发现主机没有完成图片上传

内容的提问来源于stack exchange,提问作者unboundExDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 23:57:02