pull/123/head
FongMi 3 years ago
parent 33a3a3bdab
commit 9109e262da
  1. 57
      app/src/main/java/com/fongmi/android/tv/server/Nano.java
  2. 33
      app/src/main/java/com/fongmi/android/tv/utils/FileUtil.java
  3. 2
      app/src/main/res/raw/index.html
  4. 4
      app/src/main/res/raw/script.js

@ -1,7 +1,5 @@
package com.fongmi.android.tv.server;
import android.os.Environment;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.api.ApiConfig;
import com.fongmi.android.tv.server.process.InputRequestProcess;
@ -11,16 +9,10 @@ import com.fongmi.android.tv.utils.FileUtil;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
@ -126,28 +118,10 @@ public class Nano extends NanoHTTPD {
private Response doUpload(Map<String, String> params, Map<String, String> files) {
String path = params.get("path");
for (String k : files.keySet()) {
if (k.startsWith("files-")) {
String fn = params.get(k);
String tmpFile = files.get(k);
File tmp = new File(tmpFile);
String root = Environment.getExternalStorageDirectory().getAbsolutePath();
File file = new File(root + "/" + path + "/" + fn);
if (file.exists())
file.delete();
if (tmp.exists()) {
if (fn.toLowerCase().endsWith(".zip")) {
try {
unzip(tmp, root + "/" + path);
} catch (Exception e) {
e.printStackTrace();
}
} else {
FileUtil.copy(tmp, file);
}
}
if (tmp.exists())
tmp.delete();
}
String fn = params.get(k);
File temp = new File(files.get(k));
if (fn.toLowerCase().endsWith(".zip")) FileUtil.unzip(temp, FileUtil.getRootPath() + File.separator + path);
else FileUtil.copy(temp, FileUtil.getRootFile(path + File.separator + fn));
}
return newFixedLengthResponse(Response.Status.OK, MIME_PLAINTEXT, "OK");
}
@ -196,29 +170,6 @@ public class Nano extends NanoHTTPD {
return info.toString();
}
private void unzip(File file, String path) throws Exception {
try (ZipArchiveInputStream is = new ZipArchiveInputStream(new BufferedInputStream(new FileInputStream(file)))) {
ZipArchiveEntry entry;
while ((entry = is.getNextZipEntry()) != null) {
if (entry.isDirectory()) {
new File(path, entry.getName()).mkdirs();
} else {
extractFile(is, path + File.separator + entry.getName());
}
}
}
}
private void extractFile(InputStream is, String path) {
try (OutputStream out = new FileOutputStream(path)) {
int len;
byte[] buf = new byte[2048];
while ((len = is.read(buf)) > 0) out.write(buf, 0, len);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Response createPlainTextResponse(Response.IStatus status, String text) {
return newFixedLengthResponse(status, MIME_PLAINTEXT, text);
}

@ -11,6 +11,11 @@ import androidx.core.content.FileProvider;
import com.fongmi.android.tv.App;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
import org.apache.commons.compress.utils.IOUtils;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
@ -18,7 +23,6 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.URLConnection;
import java.security.MessageDigest;
@ -94,17 +98,32 @@ public class FileUtil {
}
}
public static void copy(File src, File dst) {
try (InputStream in = new FileInputStream(src)) {
try (OutputStream out = new FileOutputStream(dst)) {
int len;
byte[] buf = new byte[1024];
while ((len = in.read(buf)) > 0) out.write(buf, 0, len);
public static void unzip(File target, String path) {
try (ZipArchiveInputStream in = new ZipArchiveInputStream(new BufferedInputStream(new FileInputStream(target)))) {
ZipArchiveEntry entry;
while ((entry = in.getNextZipEntry()) != null) {
File out = new File(path, entry.getName());
if (entry.isDirectory()) out.mkdirs();
else copy(in, out);
}
} catch (Exception ignored) {
}
}
public static void copy(File in, File out) {
try {
IOUtils.copy(new FileInputStream(in), new FileOutputStream(out));
} catch (Exception ignored) {
}
}
public static void copy(InputStream in, File out) {
try {
IOUtils.copy(in, new FileOutputStream(out));
} catch (Exception ignored) {
}
}
public static String getMd5(File file) {
try {
MessageDigest digest = MessageDigest.getInstance("MD5");

@ -141,7 +141,7 @@
<div role="dialog" aria-hidden="true" aria-modal="true" id="uploadTip" style="display: none;">
<div class="weui-mask"></div>
<div class="weui-dialog">
<div class="weui-dialog__hd"><strong class="weui-dialog__title">確認上傳?</strong></div>
<div class="weui-dialog__hd"><strong class="weui-dialog__title">確認上傳</strong></div>
<div class="weui-dialog__bd" id="uploadTipContent"></div>
<div class="weui-dialog__ft">
<a role="button" href="javascript:void(0)" onclick="doUpload(0)" class="weui-dialog__btn weui-dialog__btn_default">取消</a>

@ -126,12 +126,12 @@ function uploadFile() {
function uploadTip() {
let files = $('#file_uploader')[0].files;
if (files.length <= 0)
return false;
if (files.length <= 0) return false;
let tip = '';
for (var i = 0; i < files.length; i++) {
tip += (files[i].name) + ',';
}
tip = tip.substring(0, tip.length - 1);
$('#uploadTipContent').html(tip);
$('#uploadTip').show();
}

Loading…
Cancel
Save