Отправляю на сервер архив через OkHttp 3.12.0
class UploadFileClass extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... voids) {
OkHttpClient okHttpClient = new OkHttpClient();
File file = new File(folder.getPath(), "zip.zip");
if (file.exists()) {
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", "af.zip", RequestBody.create(MediaType.parse("application/zip"), file))
.build();
Request request = new Request.Builder()
.url("https://#####.ru/upload.php")
.post(requestBody)
.build();
try {
Response response = okHttpClient.newCall(request).execute();
Log.i(TAG, response.body().string()+" ОТВЕТ ");
} catch (IOException e) {
e.printStackTrace();
}
//MediaType.parse(getContentResolver().getType(Uri.fromFile(file)));
//MediaType.parse("image/png");
//http://www.freeformatter.com/mime-types-list.html
}
return null;
}
}
Сам архив я собираю вот так
private void Zip(String source_dir, String zip_file) throws Exception
{
FileOutputStream fout = new FileOutputStream(zip_file);
ZipOutputStream zout = new ZipOutputStream(fout);
File fileSource = new File(source_dir);
addDirectory(zout, fileSource);
zout.close();
Log.i(TAG,"Zip файл создан!");
}
private void addDirectory(ZipOutputStream zout, File fileSource)
throws Exception
{
File[] files = fileSource.listFiles();
Log.i(TAG,"Добавление директории <" + fileSource.getName() +"> длина <"+files.length+">");
for(int i = 0; i < files.length; i++) {
Log.i(TAG,"for");
// Если file является директорией, то рекурсивно вызываем
// метод addDirectory
if(files[i].isDirectory()) {
addDirectory(zout, files[i]);
continue;
}
Log.i(TAG,"Добавление файла <" + files[i].getName() + ">");
FileInputStream fis = new FileInputStream(files[i]);
zout.putNextEntry(new ZipEntry(files[i].getPath()));
byte[] buffer = new byte[4048];
int length;
while((length = fis.read(buffer)) > 0)
zout.write(buffer, 0, length);
// Закрываем ZipOutputStream и InputStream
zout.closeEntry();
fis.close();
}
}
В этом архиве есть много папок, в которых есть фото. Сам он по себе собирается успешно. Проблема в том, что когда в архиве скапливается много папок и в них фоток то он просто не отправляется на сервер и _$FILES['file'] = null
, максимум что мне удавалось отправлять это 2 папки в которых по одной фотке.
Сервер
if(isset($_FILES['file'])){
$name=$_FILES['file']['name'];
$url=dirname(__FILE__)."/".$name;
$res=move_uploaded_file($_FILES['file']['tmp_name'], $url);
}
Раньше _$FILES['file]['error']
содержал UPLOAD_ERR_INI_SIZE
, и я это исправил.
В php.ini
max_file_uploads = 20
заменил на max_file_uploads = 5000
И все работает!
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Реализую отправку zip файла на почту PHPMailer'ом, используя smtpgmail
У меня в базе хранится html-код и мне нужно выполнить поиск по содержимому тегов, не затрагивая сами тегиНапример, при поиске script не выводить...
Когда я выхожу из приложения должна удаляться папка в которой работал пользовательОна удаляется только в том случае если в папке нет других...