Показать сообщение отдельно
  #10 (permalink)  
Старый 17.06.2012, 18:26
Vit Vit вне форума
Аспирант
Отправить личное сообщение для Vit Посмотреть профиль Найти все сообщения от Vit
 
Регистрация: 11.01.2012
Сообщений: 56

Все, ребята! Разобрался.
Я ошибку искал не там, где она есть на самом деле.
Все дело в том что у меня для передачи файла организованны методы класса. Надо было просто аккуратно разобраться с вложениями.
Вот как нужно было писать:
handler:function(){
		if (this.readyState == 4){ 
		  if(this.status==200){
		   var a=this.responseText.substring(0,6);
		   if(a!=err) this.OnOk(this.responseText)
		   else this.OnFail(this.responseText);
		  };
		  if (this.status!=200){this.OnFail("Неудачная попытка связи.");}
		 }
		},
   SendFile:function(AFile,toFile,AOnOk,AOnFail){
	   if(!AOnOk)   {this._ajax.OnOk=OnOkToContent;}     else {this._ajax.OnOk=AOnOk;}
	   if(!AOnFail) {this._ajax.OnFail=OnFailToContent;} else {this._ajax.OnFail=AOnFail;}
      r=new FileReader();
	  r.Parent=this;
	  r.onload=function(fLoad){
	   param=hnp()+'&FileName='+AFile.name+'&toFile='+toFile+'&FileContent='+fLoad.target.result;
	   this.Parent._ajax.open("POST",'Fload?',true);
	   this.Parent._ajax.onreadystatechange=this.Parent.handler;
	   this.Parent._ajax.sendAsBinary(param);
	  };
	  r.onerror=function(){alert("Ошибка. файл не загружен.");}
	  var con=r.readAsBinaryString(AFile);
   },

А я писал a.onreadystatechange=handler;
Наивно полагая, что handler будет виден из Ридера
Глупо, блин, получилось...

Тогда если никто не против пожалуй последние два вопроса - У меня на форме в ячейке таблицы стоит
<td><input type="file" id="files" name="files[]" multiple class="inputtext" onchange="objppiska.ReadFile(event)"/></td>

Где
.inputtext {
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
}

Однако эта зраза (input в смысле) не растягивается на всю ширь ячейки, оставляя лишь малюсенькое поле перед кнопкой, в котором не видно пути к файлу. Некрасиво смотрится. Можно ли заставить его растянуться на всю отведенный ему территорию ячейки?

И второй - Можно ли его заменить чем нибудь, что вызовет OpenDialog операционки, как делает этот тег, имеется ввиду может быть через JS вызвать этот диалог, получив имя файла? Или как вариант - скрыть с глаз этот инпут, вызывая в нужной функции его click?
Ответить с цитированием