Как я делаю работу загрузки файла Flex над Firefox и сафари?

Попробуйте добавить это в ваш файл .babelrc:

{
  "presets": [
    ["es2016"],
    "react"
  ],
  "plugins": [
    "babel-plugin-transform-class-properties"
  ]
}
9
задан smartdirt 8 December 2008 в 22:56
поделиться

6 ответов

Я нашел этот вопрос при попытке найти ответ сам. Решение было довольно просто.

На основе ошибки Flash player, которую другие связали, и комментарии, что страница, я решил добавить идентификаторы сессии к своему URL загрузки и дать ей выстрел. Это действительно было настолько легко!

Чтобы заставить его работать, я запустил путем добавления flashVar параметра, названного sessionParams. Это позволило мне передавать любую строку, в которой я хочу к Flash player как мой идентификатор сессии, и это будет позже добавлено к URL, используемому для загрузки.

//sessionParams - resolves firefox upload bug
public var sessionParams:String = "";

//...

public function initApp():void{
    sessionParams = Application.application.parameters.sessionParams;
}

В моем случае я нахожусь на ColdFusion с включенными сессиями Java, таким образом, мой sessionParams установка как следующее прежде чем быть переданным в Flash player:

<cfset flashVars = "sessionParams=#urlEncodedFormat('jsessionid=' & session.sessionid)#" />

Не забывайте выходить из специальных символов как =, и, и т.д. (который я сделал с urlEncodedFormat), так, чтобы их рассматривали как часть значения "sessionParams" параметра и не точки останова для указания на другие параметры. Вы встраиваете информацию о будущем URL в текущий URL.

Затем используйте значение sessionParams в своем коде загрузки. Вот отрывок того, как я настроил мой:

// Set Up URLRequest
_uploadURL = new URLRequest;
_uploadURL.url = _url + "?" + _sessionParams;
_uploadURL.method = "GET";
_uploadURL.data = _variables;
_uploadURL.contentType = "multipart/form-data";

Имена переменной отличаются (но подобны), потому что это - часть допускающего повторное использование класса.

Надо надеяться, это помогает Вам. В противном случае сообщите мне, и я попытаюсь предоставить больше кода или объяснения для выручения Вас.

3
ответ дан 4 December 2019 в 21:13
поделиться

Похож это довольно старо, но я недавно столкнулся с этой проблемой, также. Моя фиксация (который совсем не оптимален) под Flex + аутентифицируемая установка направляющих должна была выключить основанную на сессии аутентификацию на сценарии загрузки.

Так как я действительно хотел, по крайней мере, стандартную аутентификацию, я сохранил имя пользователя и пароль, что пользователь вошел в систему с и написал код для отправления/проверения этого вручную на стороне направляющих. Я никогда не мог заставлять взлом "jsessionid" работать, поскольку флэш-память не имеет доступа к сеансам браузера.

Я надеюсь, что это помогает кому-то сэкономить немного времени.

0
ответ дан 4 December 2019 в 21:13
поделиться

Это - фактическая ошибка Flash player. Возможно, эта ссылка даст Вам некоторое представление.

Что Вы имеете на стороне сервера? Возможно, Вы могли добавить sessionid в качестве параметра в Вашем запросе.

0
ответ дан 4 December 2019 в 21:13
поделиться

Проблема, по крайней мере, в Firefox состоит в том, что сеансовые куки не отправляются в запросе при вызове FileReference.upload (). То, что необходимо сделать, добавляет аутентификационный маркер или как переменная формы или в строке запроса. Вот пример в Java, где сеансовые куки называют "jsessionid"

var request : URLRequset = new URLRequest( uploadUrl + ";jsessionid=" + jsessionid);

Можно проанализировать jsessionid из cookie с помощью JavaScript и ExternalInterface для вызова функции JavaScript. Или после аутентификации, у Вас может быть вызов Flex метод бэкенда, который возвращает текущий sessionID.

Связанная ошибка Flex здесь:

http://bugs.adobe.com/jira/browse/FP-201

3
ответ дан 4 December 2019 в 21:13
поделиться

Я решил эту проблему. Загрузка файлов с помощью flex будет работать во всех браузерах.В приложении J2ee,

закомментируйте security-constraint или сделайте URL fileupload.do незащищенным в web.xml, куда вы поместите фактический код.

<security-constraint>
    <display-name>Senusion Security Constraint</display-name>
    <web-resource-collection>
        <web-resource-name>Un Protected Area</web-resource-name>
          <url-pattern>/fileupload.do</url-pattern>
      </web-resource-collection>
</security-constraint> 

Надеюсь, это поможет следующим читателям.

1
ответ дан 4 December 2019 в 21:13
поделиться

FlashPlayer 10 предоставляет новый API Filereference, который может сильно помочь. Вот запись в блоге, которая описывает его : http://www.flexpasta.com/index.php/2010/02/21/uploading-files-with-firefox-solution/.

Действительно, во Flash 10 усовершенствование flash.net.FileReference позволяет читать содержимое файла до его загрузки. Это означает, что файл может быть загружен другими способами, чем это можно сделать во Flash 9. Следующий пример показывает, насколько простой может быть загрузка файлов, и не привязан к SSL, Firefox, IE, Chrome и т.д.

1
ответ дан 4 December 2019 в 21:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: