gpt4 book ai didi

java - 等待 php 脚本然后下载

转载 作者:行者123 更新时间:2023-12-01 14:53:39 24 4
gpt4 key购买 nike

我有一个 php 脚本,如果文件不存在,它会创建一个文件。 php 脚本在创建文件后发送该文件。现在我遇到的问题是,当 php 文件创建新文件时,我的下载类无法下载它(我不知道确切原因)。但如果 php 脚本发送缓存文件,则下载有效。有没有办法让android等待php脚本执行完毕?

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;

import org.json.JSONObject;

import android.os.AsyncTask;
import android.os.Environment;
import android.os.Looper;
import android.provider.ContactsContract.Directory;
import android.util.Log;

public class DownloadMP3 extends AsyncTask<String, Integer, String> {
private OnTaskRunning listener;
public DownloadMP3(OnTaskRunning listener){
this.listener=listener;
}

@Override
protected String doInBackground(String... url) {
int count;
try {
Log.d("Info", "create file");
Download down = new Download();
JSONObject jObject = new JSONObject(down.JSON(conf.d + "convert.php?v=" + url[0]));
Log.d("Info","json file: " + jObject.get("fle"));

URL u = new URL(conf.d + "convert.php?v=" + jObject.get("fle"));
Log.d("Info", "dl u");
URLConnection conexion = u.openConnection();
Log.d("Info", "dl op");
conexion.connect();
Log.d("Info", "dl co");
File directory = new File(Environment.getExternalStorageDirectory() + "/Music/VBT Splash/");
Log.d("Info", "dl di");
if (!directory.exists() || !directory.isDirectory()){
directory.mkdirs();
}



InputStream input = new BufferedInputStream(u.openStream());

String filename = conexion.getHeaderField("Content-Disposition");

String file = filename.substring(filename.indexOf("\"")+1, filename.lastIndexOf("\""));

OutputStream output = new FileOutputStream(Environment.getExternalStorageDirectory() + "/Music/VBT Splash/" + file);

int lenghtOfFile = conexion.getContentLength();
byte data[] = new byte[4096];

long total = 0;

listener.onTaskStarted();
while ((count = input.read(data)) != -1) {
total += count;
output.write(data, 0, count);
publishProgress((int) (total * 100 / lenghtOfFile));
}
Log.d("Info", "dl done");
listener.onTaskDone();
output.flush();
output.close();
input.close();
} catch (Exception e) {
}
return null;
}

protected void onProgressUpdate(Integer... progress) {
listener.onTaskProgress(progress[0]);
}

protected void onPostExecute(int result) {

}
}

最佳答案

您必须将重定向传达给您的客户端代码。如果您只是点击完整的文件路径 url ,并且它不存在,则不会下载它。因此,首先从脚本获取下载 url。 (如果不存在,将创建一个新的)然后,下载该网址。这总共向服务器发出了 2 个请求。

关于java - 等待 php 脚本然后下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14536072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com