我有以下javascript:
function downloadFiles(){
var files = [];
files.push('mysite.com/file1.txt');
files.push('mysite.com/file2.txt');
files.push('mysite.com/file3.txt');
for(var ii=0; ii<files.length; ii++){
window.location.href = files[ii];
}
}
问题是这只会下载列表中的最后一个文件,因为前两个文件会被最后一个文件覆盖。在进入下一个文件之前,如何等待用户对每个文件的输入?
答案 0 :(得分:9)
我最终做了什么:
function downloadFiles(){
var files = [];
files.push('file1.txt');
files.push('file2.txt');
files.push('file3.txt');
for(var ii=0; ii<files.length; ii++){
downloadURL(files[ii]);
}
}
var count=0;
var downloadURL = function downloadURL(url){
var hiddenIFrameID = 'hiddenDownloader' + count++;
var iframe = document.createElement('iframe');
iframe.id = hiddenIFrameID;
iframe.style.display = 'none';
document.body.appendChild(iframe);
iframe.src = url;
}
答案 1 :(得分:7)
如果您将代码更改为使用window.open()
而不是window.location
,则可以同时启动所有三个下载。
我知道这不满足在呈现每个下载之前等待用户输入的要求,但它确实构建了原始代码的精神。希望它会有所帮助。
function downloadFiles(){
var files = [];
files.push('file1.txt');
files.push('file2.txt');
files.push('file3.txt');
for(var ii=0; ii<files.length; ii++){
window.open(files[ii]);
}
}
答案 2 :(得分:0)
一个旧的但我最终解决的方法是以下
package net.muddco.soundtest1;
import androidx.appcompat.app.AppCompatActivity;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import java.io.IOException;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final String mFileName = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" +
CreateRandomAudioFileName(5) + "AudioRecording.3gp";
Record r = new Record(mFileName);
new Thread(r).start();
}
public String CreateRandomAudioFileName(int string){
String RandomAudioFileName = "ABCDEFGHIJKLMNOP";
Random random = new Random();
StringBuilder stringBuilder = new StringBuilder( string );
int i = 0 ;
while(i < string ) {
stringBuilder.append(RandomAudioFileName.
charAt(random.nextInt(RandomAudioFileName.length())));
i++ ;
}
return stringBuilder.toString();
}
}